2016-04-25 77 views
0

上個月(2016年3月)我正在構建InstallShield 2015項目,其中一個組件的.NET Installer Class屬性設置爲Yes,並且一切似乎都運行良好。這個月我在運行同樣的安裝時突然開始收到錯誤1001。看到這個錯誤來自這個.NET Installer Class組件,我決定關閉.NET Installer Class屬性作爲測試。確實解決了這個問題。但是我們有另一個構建系統,我們可以構建完全相同的代碼,並且一切仍然有效,這表明存在環境問題。在_isconfig.xml中supportedRuntime的值在ManagedInstall期間導致錯誤1001

經過一些額外的研究,我發現文件_isconfig.xml顯示了兩個系統之間屬性的不同值,我認爲這是與問題密切相關的指標。其他研究表明,這個版本可能來自InstallUtilLib.dll,這確實與我在兩個系統上看到的版本_isconfig.xml相符。該安裝與<supportedRuntime version="v4.0.30319"/>正常工作,並與<supportedRuntime version="v4.6.1055"/>失敗。順便說一句,較新的InstallUtilLib.dll的日期是2015年11月5日,所以我猜這個問題理論上可能是自那之後的任何更新的結果。

我看到我的系統最近安裝了一些.NET Framework更新,但在Google搜索影響InstallUtilLib.dll的Microsoft更新時,我會空手而歸。那麼我如何確定這個問題來確定原因和/或解決方案呢?

MSI日誌報告錯誤是這樣的:

MSI (s) (58:14) [14:17:27:958]: Executing op: CustomActionSchedule(Action=_1A0C0EC89595D04ACFD3852EF29B12BD.install,ActionType=3073,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=install /LogFile= "M:\MfgSys\System\FourthShift.SDKAdministrator.dll" "C:\Users\bmarty\AppData\Local\Temp\{C449BDEA-AA73-4FDE-A6AF-9116E1D7DEBB}\_isconfig.xml") 
MSI (s) (58:20) [14:17:27:973]: Invoking remote custom action. DLL: C:\windows\Installer\MSI7282.tmp, Entrypoint: ManagedInstall 
Error 1001. 

回答

1

你已經正確地診斷問題的直接原因。其餘部分是由於InstallShield使用它指向的框架的不正確版本。 (我相信在舊版本中,它錯誤地使用了文件版本,而不是CLR版本。)以下是我看到的選項:

  • 停止使用安裝程序類。它們很脆弱,很難調試,並且可以證明無法正確寫入。另一方面,如果你習慣了它們,它們可以非常方便和舒適。
  • 避免在您的生成機器上安裝最新版本的.NET。或者將相關文件從4.0框架複製到一個新文件夾中並指向InstallShield。 (使用進程監視器等工具來確定整個集合。)
  • 添加調整_isconfig.xml值的後處理步驟。
  • 使用正確檢索版本的InstallShield版本。例如,如果您至少沒有安裝InstallShield 2015的服務包,請嘗試一下。 (我想我們發佈針對修復,雖然已經有一些跡象表明,這是隻是局部的。我們將有一個更好的固定在我們的下一個版本,或更早,如果我們的支持團隊獲得足夠的請求。)
+0

安裝SP1解決了這個問題。 – BlueMonkMN