2014-10-06 40 views
0

我正在使用C#代碼使用運行msiexec的進程安裝程序,併爲其提供MSI文件的路徑。 這是我的代碼使用方法:C#MsiExec將程序安裝到錯誤的位置

string pathtoMsiFile = "\"" + msiPath + msiName + "\""; 
Process p = new Process(); 
p.StartInfo.FileName = "msiexec.exe"; 
p.StartInfo.Arguments = "/i " + pathtoMsiFile + " /quiet"; 
p.Start(); 
p.WaitForExit(); 

奇怪的是,當我嘗試安裝程序,對某個版本它,它安裝到正確的位置我會希望在C:\path但不同的版本,它出於某種原因安裝到D:\path。如果我手動打開MSI,則默認位置爲C:\path。任何想法爲什麼?

+0

您可以在startInfo參數中添加一個/ l * v/[path] [logfile]來生成安裝服務的日誌,它將幫助您找出哪些情況下路徑沒有正確設置 – CheGueVerra 2014-10-06 14:51:42

+0

最可能的問題是您的MSI沒有正確的默認安裝位置,所以當您沒有UI運行時,它會轉到Windows默認設置(可能是大多數空間的驅動器)。設置適當位置的東西在你的UI序列中,當你做/安靜的時候會被壓制。 – PhilDW 2014-10-06 16:52:37

回答

1

最終它出現問題是與msiexec試圖安裝的程序。 我不是那個程序的開發者,所以我無法自己先進的知道這個問題。 該程序在其安裝中有一個自定義操作,該操作將表示要安裝的驅動器的變量設置爲安裝操作系統的變量。問題是,此操作只能通過安裝的UI(雙擊MSI時)調用,而不能在使用安靜的CLI命令進行安裝時調用。