2016-02-03 195 views
1

我在安裝VS2015內置的.msi時在某些機器上安裝我們的軟件時遇到問題。MSI安裝失敗 - 錯誤1723

沒有VS2015,我得到這個日誌文件:

MSI(S)(24:64)[11:21:22:095]:做動作:InstallFinalize
行動11:21 :22:InstallFinalize。
行動開始11:21:22:InstallFinalize。 (s)(24:64)[11:21:22:095]:用戶策略值'DisableRollback'是0
MSI(s)(24:64)[11:21:22:095]:機器策略值'DisableRollback'是0
操作11:21:22:RollbackCleanup。 MSI(s)(24:64)[11:21:22:585]:爲線程8036創建類型790536的MSIHANDLE(13)
:22:595]:調用遠程自定義操作。 DLL:C:\ Windows \ Installer \ MSIAE3F.tmp,入口點:_KSTInstallSC @ 4
MSI(s)(24:74)[11:21:22:595]:生成隨機cookie。
MSI(s)(24:74)[11:21:22:645]:創建具有PID 1160(0x488)的自定義操作服務器。
MSI(s)(24:5C)[11:21:22:765]:作爲服務運行。
MSI(s)(24:5C)[11:21:22:775]:您好,我是您的32位高架非重映射自定義操作服務器。
CustomAction _3F7B94EF_231A_421E_BF8B_C0760F3B266E返回實際錯誤代碼1157(注意,如果翻譯發生在沙箱內,這可能不是100%準確的) MSI(s)(24:74)[11:21:22:975]:關閉MSIHANDLE(13)類型790536用於線程8036
MSI(s)(24:64)[11:21:22:975]:注意:1:1723 2:_3F7B94EF_231A_421E_BF8B_C0760F3B266E 3:_KSTInstallSC @ 4 4:C:\ Windows \ Installer \ MSIAE3F。 MSI(c)(8C:0C)[11:21:13](MSI(24:64)[11:21:22:975])注意:1:2262 2:錯誤3:-2147287038
MSI 22:975]:注意:1:2262 2:錯誤3:-2147287038
DEBUG:錯誤2835:控件ErrorIcon未在對話框中找到ErrorDialog 安裝程序遇到編輯一個意外的錯誤安裝這個包。這可能表明此軟件包存在問題。錯誤代碼是2835.參數是:ErrorIcon,ErrorDialog,
錯誤1723.此Windows安裝程序包存在問題。無法運行此安裝所需的DLL。聯繫您的支持人員或軟件包供應商。操作_3F7B94EF_231A_421E_BF8B_C0760F3B266E,條目:_KSTInstallSC @ 4,庫:C:\ Windows \ Installer \ MSIAE3F.tmp
MSI(s)(24:64)[11:21:25:796]:Note:1:2262 2:Error 3:-2147287038
MSI(s)(24:64)[11:21:25:796]:產品:KST - 錯誤1723.此Windows安裝程序包存在問題。無法運行此安裝所需的DLL。聯繫您的支持人員或軟件包供應商。行動_3F7B94EF_231A_421E_BF8B_C0760F3B266E,條目:_KSTInstallSC @ 4,庫:C:\ WINDOWS \ Installer程序\ MSIAE3F.tmp

我特地在Visual Studio中,也沒有匹配在日誌文件中任何自定義操作。

需要注意的是,在測試PC上安裝VS2015後,安裝工作正常,所以肯定會丟失DLL或其他東西。但是在我們所有客戶的機器上安裝VS2015並不現實。

有什麼辦法可以打包需要的文件與微星?如果是這樣,我怎麼才能找到依賴的DLL文件的名稱?

+0

Visual Studio本身不會生成MSI文件;你使用什麼擴展或插件? –

+0

這一個:https://visualstudiogallery.msdn.microsoft.com/f1cc3f3e-c300-40a7-8797-c509fb8933b9 –

回答

1

根據你建立這個軟件包的方式,可能有更好的方法來跟蹤這個項目。但讓我們假裝我們收到了這個軟件包,並希望儘管它有問題仍然可以使用它。

您知道入口點是[email protected],它使用您最喜愛的MSI編輯程序爲您在內置MSI的CustomAction table的目標列中尋找內容。該表中的記錄應該將其源列引用到包含該DLL的二進制表中的一行。一旦你提取了這個DLL,你可以使用任何工具來顯示你的依賴關係,比如Dependency Walker,CFF Explorer甚至是dumpbin /imports

至於如何解決它,在一臺機器上只安裝依賴項。但要將其修復到包中,您可能必須更改DLL的構建方式。例如,您可以使其靜態導入C++運行時,以便它沒有不尋常的外部運行時依賴關係。

0

您已經完成了與KST產品相關的一些事情,它是一個C++應用程序,顯然您是作爲自定義操作運行的,無論是故意還是通過包含合併模塊。錯誤1157表示加載失敗,所以它必須至少有一個未安裝的其他Dll的依賴關係。

0

通過附加的GUID(3F7B94EF_231A_421E_BF8B_C0760F3B266E)到自定義動作的名稱來看,我會說你納入你的包/工程,運行此自定義操作,正如菲爾提到的合併模塊。