我正在整理Windows服务(托管)的安装。我希望能够根据对话框中的用户输入更新其配置文件。配置文件正确更新并且Windows服务已安装,但看起来服务没有获取配置中的更改。我搞乱了排序吗?我想在安装并启动服务之前运行我的自定义操作“ServiceConfig”。
以下是我的WiX文件的清除摘录:
<Component Id="cmpXyzService.exe" Guid="NOTAREAL-GUID-90X5-12C5-ABC123XYZ890">
<File Id="file_XyzService.exe" KeyPath="yes" Source="$(var.SourceDir)\XyzService.exe" />
<ServiceInstall Id="InstallXyzService" Name="Service.XYZ" DisplayName="XYZ Service" Start="auto" Vital="yes" Interactive="no" ErrorControl="normal" Type="ownProcess" />
<ServiceControl Id="ServiceControlXyzService" Name="Service.XYZ" Start="install" Stop="both" Remove="uninstall" Wait="no"/>
</Component>
<CustomAction Id="SetPropertiesForService" Property="ServiceConfig" Value="[SERVICEINSTANCENAME],[CONFIGVALUE1],[CONFIGVALUE2]" />
<Binary Id="UpdateConfigFileCustomAction.CA.dll" SourceFile="$(var.UpdateConfigFileCustomActionDir)\UpdateConfigFileCustomAction.CA.dll" />
<CustomAction Id="ServiceConfig" BinaryKey="UpdateConfigFileCustomAction.CA.dll" DllEntry="EditConfigFile" Execute="deferred" Return="check" />
<InstallExecuteSequence>
<Custom Action="SetPropertiesForService" Before="ServiceConfig" >NOT Installed</Custom>
<Custom Action="ServiceConfig" After="InstallFiles" >NOT Installed</Custom>
</InstallExecuteSequence>
这是Orca
中InstallExecuteSequence表的精简副本StopServices VersionNT 1900 DeleteServices VersionNT 2000 RemoveFiles 3500 InstallFiles 4000 SetPropertiesForService NOT Installed 4001 ServiceConfig NOT Installed 4002 InstallServices VersionNT 5800 StartServices VersionNT 5900 RegisterUser 6000 RegisterProduct 6100 MsiPublishAssemblies 6250 PublishFeatures 6300 PublishProduct 6400 InstallFinalize 6600 RemoveExistingProducts 6601
如果我编辑了一些重要的东西,我会道歉 - 我不想抛弃我所拥有的一切。我相信我已经包含了所有相关内容。
答案 0 :(得分:0)
根据最后评论:
This caused a kerfuffle back in 2006。我确实找到了this workaround。基本上,WiX无法识别RunInstallerAttribute。