2009-11-05 270 views
1

我們使用Visual Studio 2008上的工具創建了MSI安裝程序。MSI錯誤。 1001.用法:生產服務器上的InstallUtil ..錯誤

這在安裝程序類中實現了一些自定義操作。

它可以在所有測試服務器上正常工作,但由於某種原因,它在其中一臺生產服務器上失敗。錯誤消息是:

錯誤。 1001.用法:InstallUtil [/ u |/uninstall] [option [..]] assembly [[option []] assembly]

installUtil在每個給定的程序集中執行安裝程序||如果/ u或/卸載開關是...

回答

1

是您傳遞給自定義安裝程序類目錄的參數之一嗎?如果是這樣,最有可能的是在參數名的末尾添加一個額外的\,這反過來又沒有正確地轉義,從而導致這個錯誤。

嘗試運行類似於這樣一個命令: MSIEXEC/I與.msi/L * V 「」

檢查日誌文件以找到違規參數。

不幸的是,我還沒有找到解決這個問題的方法,而不是以其他方式將參數傳遞給自定義程序集(硬編碼-yikes!),或者從C#中的註冊表中重新讀取我的路徑值碼。

6

事實上,這一直困擾着我好幾天。

傳遞給msiexec的參數通過罰款並正確顯示在Properties集合中,如通過日誌查看的。

例如:

msiexec /i setup.msi /L* log.txt TargetDir="D:\Samples\Test\" CustAddOnDir="D:\Samples\Test\AddOns\" 

在日誌的方式展示了你所期望:

Property(C): TARGETDIR = D:\Samples\Test\
Property(C): CUSTADDONDIR = D:\Samples\Test\AddOns\

但是當您嘗試通過CustomactionData上對這些通過其中的自定義操作屬性頁你得到這個錯誤:

/addOnDir="[CUSTADDONDIR]"

這似乎愚蠢,但去掉結尾的「\」從msiexec命令行解決了這個問題。

msiexec /i setup.msi /L* log.txt TargetDir="D:\Samples\Test" CustAddOnDir="D:\Samples\Test\AddOns" 

現在的問題是,嘗試將TargetDir傳遞給您的自定義操作總是失敗。

/destDir="[TARGETDIR]" 

這似乎是由於尾隨「\」,如果不存在,它總是被追加。如果你想讓用戶選擇一個新目錄來安裝,這真的很糟糕。你會如何將這種情況引入您的自定義行爲?

您需要取消轉義結尾的斜線:「對象引用未設置爲對象錯誤的實例」

/destdir="[TARGETDIR]\" 
+0

如果我未逸出我得到最後的斜線在這種情況下如何解決問題? – 2016-04-25 05:49:29

相關問題