2013-04-26 192 views
4

我試圖在64位過程中在WiX 3.5中運行託管的自定義操作。所涉及的所有項目均配置爲以x64構建(如指定的here)。 我的理解是,這個關鍵是sfxca版本。根據我的構建日誌,它正確調用x64版本。在64位的WiX自定義操作

"C:\Program Files (x86)\Windows Installer XML v3.5\bin\..\sdk\MakeSfxCA.exe" "C:\Projects\WiXInstaller\MyCustomActions\obj\x64\Debug\MyCustomActions.CA.dll" "C:\Program Files (x86)\Windows Installer XML v3.5\bin\..\sdk\x64\SfxCA.dll" "C:\Projects\WiXInstaller\MyCustomActions\obj\x64\Debug\MyCustomActions.dll" "C:\lib\wix35\Microsoft.Deployment.WindowsInstaller.dll;..\builds\source\OtherDll.dll;C:\Projects\WiXInstaller\MyCustomActions\CustomAction.config" 

但是當我運行安裝程序,日誌仍然說「你好,我是你的32位模擬的自定義操作服務器,」和自定義操作不能正常運行。

具體而言,我試圖運行64位版本的Powershell而不是32位版本。

+0

默認情況下,DTF ca被設置爲任意CPU。本地鉤子是32位的,但CA進程是64位。 – 2013-04-26 17:16:34

+0

我將它從任何CPU改爲x64專門強制使用正確的sfxca版本。 – TheWhitness 2013-04-29 14:53:00

+0

我不知道爲什麼它很重要。 sfxca只是用來啓動一切,並封送interop電話。我已經運行了64位代碼,而不必在過去這樣做。 – 2013-04-29 15:27:45

回答

6

如果您明確地將託管代碼編譯爲64位,則DTF會將您的自定義操作正確加載到64位自定義操作服務器中。默認情況下,託管代碼編譯爲「任何CPU」,這會導致您的自定義操作被加載到32位自定義操作服務器中。

希望有幫助!

+0

我接受了這個答案,即使真的這個問題是我自己的愚蠢 - 這將是大多數人在這個問題上磕磕絆絆的問題。謝謝! – TheWhitness 2013-05-08 15:26:03

+0

我編譯了64位的WiX安裝程序項目,它仍然運行32位的Action Server。你是怎麼得到它加載64位? – codenamezero 2017-08-03 20:10:03