2012-06-07 53 views
1

我試圖執行一個自定義操作,它寫有C#(.NET 3.5),它具有對單個DLL(也是C#3.5)的依賴關係。我在安裝中包含了.EXE和.DLL,並驗證了它們正被複制到安裝位置。但是,每次嘗試運行自定義操作時,出現以下錯誤:是否可以在管理的.EXE文件的WiX中執行自定義操作?

Action start 7:21:16:InstallFinalize。 錯誤1721.此Windows安裝程序包存在問題。此安裝完成所需的程序無法運行。聯繫您的支持人員或軟件包供應商。操作:UpgradeTo022,位置:C:\ Program Files \ Test \,命令:Upgrade-0.2.2.EXE MSI(s)(CC:38)[07:21:19:061]:Product:Test - Error 1721.這個Windows安裝程序包存在問題。此安裝完成所需的程序無法運行。聯繫您的支持人員或軟件包供應商。行動:UpgradeTo022,位置:C:\ Program Files文件\測試\,命令:升級-0.2.2.EXE

的自定義動作定義如下:

<CustomAction Id="UpgradeTo022" 
Directory="INSTALLLOCATION" 
Impersonate="no" 
Execute="deferred" 
ExeCommand='Upgrade-0.2.2.EXE'> 

注:自定義操作必須是以提升的權限運行,因此延遲執行和Impersonate =「no」屬性。

它安排如下:

<InstallExecuteSequence> 
    <Custom Action="UpgradeTo022" Before="InstallFinalize">NOT Installed</Custom> 
</InstallExecuteSequence> 

文件安裝如下:

<Component Id="CMP_UpgradeCommon" Guid="8ECF5076-732E-4010-A33B-BE362D818949" Win64="yes"> 
    <File Id="FILE_UpgradeCommonDLL" 
    Source="..\Upgrade\UpgradeCommon\bin\Debug\UpgradeCommon.dll" Vital="yes"/> 
</Component> 

我已經看到了一些典故到運行管理的EXE作爲一個自定義操作和MSIS的問題,但沒有真正的明確答案。

我也嘗試過只運行一個非常簡單的.EXE,沒有依賴作爲自定義動作,並沒有運氣。

對於創建安裝程序包來說有些新意,它很可能是要嘗試做一些不受支持的事情,或者缺少一些簡單的東西。

在此先感謝您的任何指示。

JT。

回答

0

不幸的是,這可能是一些事情。首先你確定.net 3.5安裝在目標機器上?從這個角度來說,你真的可以在目標機器上運行exe嗎?

另外需要注意的是,延遲操作在系統帳戶的上下文下運行,所以如果exe由於任何原因需要訪問配置文件,這將導致它失敗。在嘗試生成證書作爲我的安裝的一部分時,我遇到了這個問題。我在這個問題上摸不着頭,最後不得不用PowerShell產生一個-RunAs開關,然後運行一個腳本來調用exe。可能值得檢查,看看該應用程序在系統帳戶下運行良好(http://www.tech-recipes.com/rx/1288/how-to-run-applications-in-the-local-system-account- lsa /)

相關問題