我使用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安裝程序框架
- 2. 編譯Qt安裝程序框架static
- 3. Qt安裝程序框架組件安裝位置
- 4. Qt安裝程序框架卸載程序
- 5. 如何用Qt安裝程序框架創建多語言安裝程序?
- 6. 撤消Pdfnup操作
- 7. Qt安裝程序框架:隱藏後退按鈕
- 8. Qt安裝程序框架 - 自定義UNINSTALLER
- 9. Qt安裝程序框架 - 如何自定義?
- 10. Qt安裝程序框架,卸載/更新離線
- 11. Qt安裝程序框架更改安裝路徑並添加子文件夾
- 12. Qt安裝程序框架:如何隱藏選擇要安裝的文件夾
- 13. Qt安裝程序框架的解決方法不覆蓋現有安裝
- 14. WIX安裝程序時間框架來開發安裝程序
- 15. 使用Qt安裝程序框架來創建我的應用程序安裝程序
- 16. Qt的安裝框架:在桌面
- 17. 在Mac中安裝Qt Messaging框架?
- 18. 使用ArrayList撤消操作
- 19. NSManagedObjectContext:撤消保存操作?
- 20. 撤消consecutives的ConvertTo操作
- 21. 在CoreData中撤消操作
- 22. 撤消刪除操作monogdb
- 23. 執行撤消操作
- 24. 撤消實現 - DOM操作
- 25. Qt:正確地將撤消框架與QGraphicsScene集成
- 26. 播放框架應用程序安裝
- 27. 從安裝程序自定義操作中運行實體框架遷移
- 28. 作出C#應用程序的安裝程序,包括.NET框架安裝到安裝
- 29. 高級安裝程序啓動操作
- 30. 自定義操作安裝程序
一些進展,但它仍然無法正常工作。現在我寫:
component.addOperation("Execute", "cmd", "/C", "mkdir", dataDir, "UNDOEXECUTE", "cmd ", "/C", "rmdir", "/S", /Q", dataDir);
。但它返回錯誤消息「執行失敗(意外退出代碼1):cmd/C mkdir C:\ User \ Staranger \ AppData \ Local \ MyPath」 –