我可以通過命令行和定製的Inno Setup安裝程序成功卸載第三方應用程序。卸載命令僅在發佈模式下失敗
命令行執行:
MSIEXEC.exe /x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn
Inno Setup的命令:
[Run]
Filename: msiexec.exe; Flags: runhidden waituntilterminated;
Parameters: "/x {{14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";
StatusMsg: "Uninstalling Service...";
我也能夠執行在調試模式下面的C#代碼時編程卸載應用程序。
C#代碼:
string fileName = "MSIEXEC.exe";
string arguments = "/x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";
ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
};
Process process = Process.Start(psi);
string errorMsg = process.StandardOutput.ReadToEnd();
process.WaitForExit();
相同的C#代碼,但是,會產生當作爲已編譯的,部署了Windows服務運行以下失敗輸出:
"This action is only valid for products that are currently installed."
附加評論:
- 正在發行的Windows服務 卸載命令正在上運行與調試模式下測試的代碼是 相同的機器。 Windows 服務正在以 本地系統帳戶的身份運行/登錄。
- 我已經查閱了我的應用程序日誌 並且我已驗證 執行的命令參數是 在調試和發佈模式下都是相同的。
- 我已經諮詢了事件查看器 ,但它沒有提供任何線索。
想法?任何幫助將不勝感激。謝謝。
該應用程序的安裝程序被封裝在自定義InnoSetup安裝程序中。 InnoSetup安裝程序反過來由登錄用戶手動執行。也就是說,卸載由在本地系統帳戶下運行的服務觸發。我會嘗試讓服務安裝並卸載。許多thx。 – 2008-09-12 15:17:59