我使用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安装程序框架撤消Mkdir操作
0
A
回答
0
你说你都尝试
component.addOperation("Execute", "mkdir " + dataDir, "UNDOEXECUTE", "del /S /F" + dataDir);
和
component.addOperation("Execute", "cmd", "/C", "mkdir", dataDir, "UNDOEXECUTE", "cmd ", "/C", "rmdir", "/S", /Q", dataDir);
我认为正确的做法是第一位的,随着S的语法econd:
component.addOperation("Execute", "mkdir", dataDir, "UNDOEXECUTE", "del", "/S", "/F", dataDir);
第一个没有工作,因为你必须将可执行文件与参数分开。如果Qt获得单个字符串,它会认为它是您的可执行完整路径。 第二个实际应该工作,因为你可以运行(例如在cmd中)“cmd/c mkdir yourPath”,它可以按预期运行。无论如何,我已经测试并使用了我提出的解决方案。如果它不起作用,请确保您在路径中正确地逃避反斜杠。
0
我遇到了同样的问题。
总之,它看起来像QtIFW目录上的操作是越野车。
在Windows下我用这种方式已经解决:
- 我已经创建了管理的输入参数“增加”的安装和输入参数中的批处理文件“删除”时,卸载过程中。
- 我把它放在安装程序的资源文件中。
在我提出这个脚本安装目录组件的构造函数:
installer.performOperation( “复制”,[ “://myfile.bat”,installer.value( “TARGETDIR”) ]);
在组件的createOperations有:
component.addOperation( “执行”,[ “CMD”, “/ C”, “@ @TargetDir \\ myfile.bat”, “添加”,“ workingDirectory = @ TargetDir @“,”UNDOEXECUTE“,”cmd“,”/ c“,”@TargetDir @ \\ myfile.bat“,”delete“,”workingDirectory = @ TargetDir @“]);
在控制器的finishPageCallback我删除批次以这种方式:
installer.performOperation( “删除”,installer.value( “TARGETDIR”)+ “\\ myfile.bat”));
0
这是安装程序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安装程序框架static
- 2. Qt安装程序框架卸载程序
- 3. 如何用Qt安装程序框架创建多语言安装程序?
- 4. Qt安装程序框架,卸载/更新离线
- 5. WIX安装程序时间框架来开发安装程序
- 6. 在Mac中安装Qt Messaging框架?
- 7. 撤消实现 - DOM操作
- 8. 撤消consecutives的ConvertTo操作
- 9. 使用ArrayList撤消操作
- 10. 在CoreData中撤消操作
- 11. 作出C#应用程序的安装程序,包括.NET框架安装到安装
- 12. 自定义操作安装程序
- 13. 高级安装程序启动操作
- 14. 安装程序需要框架4.0 - 但它已经安装
- 15. 互操作,撤消所有的行动在字撤消堆
- 16. Qt安装程序框架:maintenancetool --checkupdates标志不会返回任何内容
- 17. Qt安装程序框架2.0.1:只在第一页显示水印
- 18. Qt安装程序框架:使用参数创建快捷方式
- 19. 如何隐藏我自己的页面(Qt安装程序框架)
- 20. Zend框架安装
- 21. 安装Zend框架
- 22. 如何撤消webapp中的操作?
- 23. disableUndoRegistration仍然允许撤消操作
- 24. Visual C++撤消和重做操作
- 25. 无法执行多个撤消操作
- 26. 检查操作系统版本或安装.net框架的免费启动程序或引导程序
- 27. 如何翻译下一个,取消,退出按钮? (基于Qt安装程序框架)
- 28. Qt安装程序框架:检测是否安装了VC++可再发行组件
- 29. Qt的跨平台安装程序
- 30. 安装Qt 5的postgres驱动程序
一些进展,但它仍然无法正常工作。现在我写:
component.addOperation("Execute", "cmd", "/C", "mkdir", dataDir, "UNDOEXECUTE", "cmd ", "/C", "rmdir", "/S", /Q", dataDir);
。但它返回错误消息“执行失败(意外退出代码1):cmd/C mkdir C:\ User \ Staranger \ AppData \ Local \ MyPath” –