2013-05-07 98 views
6

導致1723 DLL沒有發現錯誤,我有維克斯安裝工作,並不斷收到此錯誤信息:什麼在維克斯安裝

維克斯錯誤1723。此Windows Installer軟件包存在問題。無法運行此安裝所需的DLL。

是否有任何其他問題會導致與DLL無關的1723錯誤?

我可以100%肯定地說,必須找到DLL,因爲以前的自定義操作在同一個安裝程序中工作,它們都使用相同的DLL。

我之前有過這個錯誤,並通過重命名自定義操作來解決它,所以我認爲它與自定義操作允許的名稱長度有關。這次我嘗試了一個較短的名字和一個名字,以及其他工作自定義動作的確切長度,但仍然出現這個錯誤。

我調查了1723的原因,最常見的似乎是安裝程序由於訪問權限未能解壓DLL。雖然這是不太可能的,因爲引用同一個DLL的同一文件中的其他自定義操作正常工作,我已確保安裝程序試圖訪問的文件夾具有此用戶的完全訪問權限,同時我也從管理員的命令提示符運行安裝程序模式,所以我們應該沒有問題。

+0

這不是一個WiX工具集錯誤代碼,所以我有點困惑。您是否在安裝過程中從Windows Installer(MSI)獲取了該信息?如果是的話,你可以分享一些關於自定義動作的信息,它的依賴關係是什麼等等? – 2013-05-07 13:25:25

+0

這不是一個WIX工具集錯誤,據我所知它是Windows安裝程序無法找到DLL的標準錯誤代碼。不過,我很確定它是由WIX造成的,而不是正確構建安裝程序。我認爲/希望我在自定義操作名稱中找到原因是_。 – Purplegoldfish 2013-05-07 13:48:29

+0

好吧,我們需要更多關於如何在MSI中包含自定義操作的詳細信息,以及自定義操作.dll如何構建爲真正的服務。 – 2013-05-07 15:52:44

回答

0

我用這個非常相同的問題在牆上打了幾個星期。我的解決方案不僅是重命名自定義操作方法名稱,而且還重命名CustomAction中的ID。

<CustomAction Id="CA_InstallerDll.install" 
       BinaryKey="B_CustomAction_CA" 
       DllEntry="Install_InstallerDll" 
       Execute="deferred" 
       Return="check" 
       Impersonate="no"/> 

...到...

<CustomAction Id="CA_DllInstaller.install" //changed InstallerDll to DllInstaller 
       BinaryKey="B_CustomAction_CA" 
       DllEntry="Install_DllInstaller" //Changed the CA Method name too 
       Execute="deferred" 
       Return="check" 
       Impersonate="no"/> 

我不知道這是否是你所說的「重命名的自定義操作」的意思,但是這是固定的對我來說。另一個令人沮喪的事情是,即使我去了並重新命名爲InstallerDll,它仍然會出於同樣的原因失敗。

+1

這就是我所做的,基本上改變了自定義操作的ID和刪除_的方法的名稱,事情似乎正在工作。 – Purplegoldfish 2013-05-08 08:45:40

4

WIX 3.x(更具體地說MakeSfxCA)有一個已知的錯誤,可能會產生錯誤的本地dll文件,導致錯誤「1723」。該錯誤是根據自定義操作的名稱(用「CustomAction」屬性裝飾的方法)觸發的。

如果您有兩個自定義操作具有相同的前綴,一個後跟小寫,另一個後跟一個大寫字母(後來在字母表中),則可能會遇到「1723」錯誤。例如。名爲「isactive」和「isBlocked」的兩個自定義操作很麻煩。

這與MakeSfxCA錯誤地排序導出方法的入口點有關。

參考http://wixtoolset.org/issues/4502爲WIX的問題和Adding a new Custom Action to a project prevents an existing Custom Action from being run欲瞭解更多技術細節。

+0

儘管它說它是固定在3.8/9,但我有一個問題與自定義操作的常見前綴有關,在3.10 – 2016-08-05 20:32:52

1

我最近得到了這個錯誤,問題是DLL依賴。我的DLL有其他DLL依賴關係,這些依賴關係出現在我的開發機器上,並且當我看到錯誤時,它們不在目標機器上。您可以使用Dependency Walker http://www.dependencywalker.com來檢查您的依賴關係,以確定是否屬於這種情況。這當然幫助了我。

1

我們花了幾個月的時間來解決血腥的error 1723

通過dumpbin /Exports CustomAction.CA.dll(從Visual Studio開發工具可運行)編譯之後,在下列方式排序項:

121 78 000039DE Dev***************** 
122 79 000039F4 DML***************** 
123 80 00003A0A DoN***************** 

假設使用ASCII看起來這是不正確的是排序應該做的。大寫字母M應該在小寫字母e之前,因此應該替換條目121122

我們在Wix 3.9 R2上覆制了該問題,但是在某些Windows 7 Ultimate虛擬機問題沒有發生但在Windows 7 Enterprise上可重現。

對於我們來說,解決方案是將CustomAction項目中的CustomAction的名稱從DML *********更改爲DmL ********,從而使排序工作正確。 PS:我試圖直接在WiX網頁上提供反饋,但我無法註冊。

+0

Wix曾經有一個[error](http://wixtoolset.org/issues/4502/)當訂購條目時,但在Wix 3.9 RC3以上版本中已修復。請你仔細檢查wix版本。有關更多技術信息,請參閱[此處](http://stackoverflow.com/a/25299512/2300713)。 – Hille 2015-08-09 16:25:26

+0

這個問題存在於Win10的3.10中,肯定不知道是否是因爲排序,但是我也得到了一個帶有公共前綴的錯誤。 – 2016-08-05 20:34:06

0

對我來說,這是自定義操作方法的重命名。我將一個字母從小寫更改爲大寫,並忘記在XML中更改它。

0

在我的情況下,我必須先編譯CustomActions項目,然後編譯安裝項目。