我使用qt安装程序框架来创建安装程序。在安装步骤中,我调用
component.addOperation("Mkdir", dataDir); // dataDir is a dataLocationDir like C:\Users\Stranger\AppData\Local\MyAppName
当我安装的程序工作时,它将一些文件夹和文件放入dataLocationDir,这样,当我运行卸载时,“Mkdir”操作的UNDO步骤无法正常工作。我尝试使用这样的“执行”命令:
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 my / path'(没有程序定义)”
你说你试过两个
component.addOperation("Execute", "mkdir " + dataDir, "UNDOEXECUTE", "del /S /F" + dataDir);
和
component.addOperation("Execute", "cmd", "/C", "mkdir", dataDir, "UNDOEXECUTE", "cmd ", "/C", "rmdir", "/S", /Q", dataDir);
我认为正确的方法是第一个,使用第二个的语法:
component.addOperation("Execute", "mkdir", dataDir, "UNDOEXECUTE", "del", "/S", "/F", dataDir);
第一个不起作用,因为您必须将可执行文件与参数分开。如果Qt获得单个字符串,则假定它是您的可执行完整路径。第二个实际应该工作,因为您可以运行(例如在cmd中)“cmd / c mkdir yourPath”并且它按预期工作。无论如何,我已经测试并使用了我提出的解决方案。如果它不起作用,请确保在路径中正确地逃避反斜杠。
我遇到了同样的问题。
简而言之,看起来QtIFW目录上的操作是错误的。
在Windows下我用这种方式解决了:
这是Mkdir操作中的安装程序error。
我使用控制器脚本解决了这个问题。
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);
}