我在做什麼錯?維克斯:通過性,以自定義操作,已通過SO看,* *仍然沒有工作:(
請,如果你的回答是,我應該使用內置的服務安裝的東西在維克斯,也懶得回答,它不適合我工作得很好,我不想去應用XSLT轉換到我的加熱.wxs文件。
根據我的日誌,它做兩的自定義操作,但InstallAndStartServices告訴我「INSTALLFOLDER」不在session.CustomActionData字典中。
<Binary Id="ServiceInstaller" SourceFile="DeploymentItems\ServiceInstaller.CA.dll" />
<CustomAction Id="SetInstallFolderForCA" Property="InstallAndStartServices" Value="INSTALLFOLDER=[INSTALLFOLDER]" Execute="immediate" Return="check" />
<CustomAction Id="InstallAndStartServices" BinaryKey="ServiceInstaller" DllEntry="InstallAndStartServices" Execute="immediate" Return="check" />
<InstallExecuteSequence>
<Custom Action="SetInstallFolderForCA" After="InstallFiles">NOT Installed</Custom>
<Custom Action="InstallAndStartServices" After="SetInstallFolderForCA"/>
</InstallExecuteSequence>
MSI(78:DC)[15:31:47:745]:PROPERTY CHANGE:增加InstallAndStartServices屬性。它的值是'INSTALLFOLDER = C:\ Program Files \ My Product \'。
MSI(一個或多個)(78:DC)[15:31:47:745]:執行動作:InstallAndStartServices
MSI(一個或多個)(78:DC)[15:31:47:745]:注意:1:2205 2:3:ActionText
Action start 15:31:47:InstallAndStartServices。
開始InstallServices
異常的自定義操作拋出: System.Reflection.TargetInvocationException:異常已通過調用的目標引發異常。 ---> System.Collections.Generic.KeyNotFoundException:給定的鍵不存在於字典中。
在System.Collections.Generic.Dictionary`2.get_Item(TKEY的鍵)
在Microsoft.Deployment.WindowsInstaller.CustomActionData.get_Item(String鍵)
string installFolder = session.CustomActionData["INSTALLFOLDER"];
嗯。原來我不得不在CA上執行延期執行。任何人都可以解釋它是如何「推遲」的,以及在「即時」和「延遲」之間發生了什麼? – user1796307 2013-02-13 16:05:27
如果自定義操作正在對系統進行更改,則應該按延遲運行。快速的問題..爲什麼你不使用WIX來安裝和啓動你的服務? – 2013-02-13 16:13:40
附加信息:http://www.symantec.com/connect/blogs/basic-differences-execute-immediate-and-execute-deferred-ca – 2013-02-13 16:27:17