Я использую фреймворк qt для создания установщика. На этапе установки я вызвал component.addOperation("Mkdir", dataDir); // dataDir is a dataLocationDir like C:\Users\Stranger\AppData\Local\MyAppName
Когда моя установленная программа работала, она помещала некоторые папки и файлы в dataLocationDir, таким образом, операция UNDO в операции «Mkdir» не срабатывала корректно, когда я запускал удаление. Я пытаюсь использовать «Выполнить» команду, как это: component.addOperation("Execute", "mkdir " + dataDir, "UNDOEXECUTE", "del /S /F" + dataDir);
, а также я попытался component.addOperation("Execute", "cmd /C mkdir " + dataDir, "UNDOEXECUTE", "cmd /C del /S /F" + dataDir);
но это методы отмены с ошибкой «Не удалось запустить:„MKDIR мой/путь“(Нет программы определено)» Qt installer framework undo Операции Mkdir
ответ
Вы сказали вы пробовали и
component.addOperation("Execute", "mkdir " + dataDir, "UNDOEXECUTE", "del /S /F" + dataDir);
и
component.addOperation("Execute", "cmd", "/C", "mkdir", dataDir, "UNDOEXECUTE", "cmd ", "/C", "rmdir", "/S", /Q", dataDir);
Я думаю, что правильный путь является первым один, с синтаксисом с econd:
component.addOperation("Execute", "mkdir", dataDir, "UNDOEXECUTE", "del", "/S", "/F", dataDir);
Первый не работал, потому что вам нужно отделить исполняемый файл от аргументов. Если Qt получает одну строку, предполагается, что это ваш полный путь к исполняемому файлу. Второй, на самом деле, должен работать, поскольку вы можете запускать (например, в cmd) «cmd/c mkdir yourPath», и он работает по назначению. Во всяком случае, я протестировал и использовал решение, которое я предлагаю. Если это не сработает, убедитесь, что вы правильно выбрали обратную косую черту на своем пути.
Я столкнулся с той же проблемой.
Вкратце, похоже, что операции с каталогами QtIFW являются ошибками.
Под Windows я решил так:
- Я создал пакетный файл, который управляет входным аргументом «добавить» в процессе установки и ввода аргумента «удалить», когда во время деинсталляции.
- Я поместил его в файл ресурсов установщика.
В конструкторе компонента я движущемся этот скрипт в директорию установки:
installer.performOperation ("Copy", [ ": //myfile.bat", installer.value ("TargetDir") ]);
В createOperations Компонента есть:
component.addOperation ("Выполнить", [ "CMD", "/ C", "@TargetDir @ \\ myfile.bat", "добавить", " workDirectory = @ TargetDir @ "," UNDOEXECUTE "," cmd ","/c "," @TargetDir @ \\ myfile.bat "," delete "," workingDirectory = @ TargetDir @ "]);
В finishPageCallback из контроллера я удалить пакет таким образом:
installer.performOperation ("Удалить", installer.value ("TargetDir") + "\\ myfile.bat"));
Это установщик error в операции Mkdir.
Я обошел это, используя скрипт контроллера.
Controller.prototype.FinishedPageCallback = function()
{
if (installer.isUninstaller() && installer.status == QInstaller.Success) {
var pathToconfigMyapp = QDesktopServices.storageLocation(QDesktopServices.GenericDataLocation) + "\\Myapp";
if(installer.fileExists(pathToconfigMyapp) === true){
installer.executeDetached("cmd",["/c", "rd", "/q", "/s", pathToconfigMyapp]);
}
gui.clickButton(buttons.FinishButton);
}
- 1. Qt Installer Framework Uninstaller
- 2. Qt Installer Framework
- 3. Qt Installer Framework - Как настроить?
- 4. Qt Installer Framework: Auto Update
- 5. Qt Installer Framework - чтение загруженной версии пакета
- 6. Невозможно понять Undo Redo Framework в Qt
- 7. Qt Installer Framework: Скрыть кнопку «Назад»
- 8. Qt Installer Framework: Перевести описание компонента
- 9. Qt Installer Framework - Удаление инструмента обслуживания
- 10. Netbeans 6.9 Операции UNDO
- 11. Undo consecutives операции ConvertTo
- 12. Qt Installer window title
- 13. Проблема с Qt Undo Framework пример: добавить/удалить элемент
- 14. Qt Installer Framework: maintenancetool --checkupdates flag ничего не возвращает
- 15. Qt installer Framework: как скрыть выбор папки для установки
- 16. Qt Installer framework, удаление/обновление в автономном режиме
- 17. Qt Installer Framework Изменить путь установки и добавить подпапку
- 18. Использование Qt Installer Framework для создания моего установщика приложений
- 19. Установка VC++ Redistributables в установщике Qt Installer Framework (QtIFW)?
- 20. Qt installer framework чтение текстового файла для пути установки
- 21. Реализация Undo - функция повтора в Qt?
- 22. Qt Installer, перезаписать предыдущую версию
- 23. Qt Undo/Redo для перемещения элементов
- 24. Операции Visual C++ Undo and Redo
- 25. Как использовать рамки QT-Undo в конструкторе
- 26. Undo stack остается пустым в Qt
- 27. C++ Qt: побитовые операции
- 28. Место установки компонентов каркаса Qt Installer
- 29. Powershell: код выхода .NET Framework installer
- 30. Операции в Play Framework
Некоторый прогресс, но он все еще не работает. Теперь я пишу:
component.addOperation("Execute", "cmd", "/C", "mkdir", dataDir, "UNDOEXECUTE", "cmd ", "/C", "rmdir", "/S", /Q", dataDir);
. Но оно возвращает сообщение об ошибке «Выполнение не выполнено (неожиданный код выхода 1): cmd/C mkdir C: \ User \ Staranger \ AppData \ Local \ MyPath" –