WiX - 排序自定义操作和服务安装

时间:2011-04-19 21:22:36

标签: .net wix

我正在整理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

如果我编辑了一些重要的东西,我会道歉 - 我不想抛弃我所拥有的一切。我相信我已经包含了所有相关内容。

1 个答案:

答案 0 :(得分:0)

根据最后评论:

This caused a kerfuffle back in 2006。我确实找到了this workaround。基本上,WiX无法识别RunInstallerAttribute。