我構建了一個簡單的WIX安裝程序,用於部署exe和第三方DLL,並創建快捷方式。安裝程序似乎做工精細,並且用C的地方都在EXE和DLL文件夾中:\ Program Files文件(x86)的,但是當我嘗試運行應用程序,我得到一個錯誤:安裝WIX更改程序集名稱
System.IO.FileLoadException: Could not load file or assembly 'GACManagerApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'GACManagerApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
應用程序運行從IDE中很好,甚至從IDE bin目錄中的可執行文件,但用WIX部署後無法加載程序集。在預感上,我將dll從bin目錄複製到部署的位置,並開始工作。仔細觀察,看起來WIX正在爲第三方元數據做一些事情,因爲它部署了足夠的簽名以使exe不能再加載它。下面是在WXS的組件的定義:
<Component Id="GACManagerApi">
<File Id="GACManagerApiDLL" Name="GACManagerApi.dll" Source="$(var.GHCComponentManager.TargetPath)" />
</Component>
我也注意到,在DLL特性的細節是不同的,有文件說明,產品名稱和原始文件名被更改爲我的可執行文件,而不是組裝的原始值。
我是否在我的wsx中丟失了導致這種情況發生的事情?
您確定在wix編譯期間拉動了正確版本的ghc組件管理器嗎?從正確的位置等?我還沒有看到wix操縱元數據或任何類型的東西。 – Isaiah4110
這不是組件管理器本身的問題,但是,它應該總是拉動構建版本,並且只有一個版本。它正在使用的程序集,var.GHCComponentManager.TargetPath,應該是引用的版本,因爲我使用複製本地,它將把它放在bin目錄中的EXE。這是我可以複製和粘貼到安裝版本的bin版本,並且一切正常。 –
你能用你的wix腳本更新這個問題嗎? – Isaiah4110