我究竟做错了什么??
请,如果您的回答是我应该使用内置服务在 WiX 中安装东西,请不要打扰回答。它对我来说不是很好,我不想将 XSLT 转换应用于我的 HEATed .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 (s) (78:DC) [15:31:47:745]:属性更改:添加 InstallAndStartServices 属性。其值为“INSTALLFOLDER=C:\Program Files\My Product\”。
MSI (s) (78:DC) [15:31:47:745]:执行操作:InstallAndStartServices
MSI (s) (78:DC) [15:31:47:745]: 注意: 1: 2205 2: 3: ActionText
动作开始时间 15:31:47:InstallAndStartServices。
开始安装服务
自定义操作引发的异常:System.Reflection.TargetInvocationException:调用目标已引发异常。---> System.Collections.Generic.KeyNotFoundException:给定的键不在字典中。
在 System.Collections.Generic.Dictionary`2.get_Item(TKey 键)
在 Microsoft.Deployment.WindowsInstaller.CustomActionData.get_Item(字符串键)
string installFolder = session.CustomActionData["INSTALLFOLDER"];