如何将值从自定义对话框传递到组件

时间:2011-05-19 11:46:29

标签: wix windows-installer customdialog install-sequence

我创建了一个自定义对话框,允许用户配置将运行我们正在安装的服务的帐户。我通过将属性事件附加到我的自定义对话框上的“下一步”按钮来执行此操作,该按钮将设置 [帐户] 属性:

<Publish Property="Account" Value="[USERNAME]">USERACCOUNT = "1"</Publish>
<Publish Property="Account" Value="Local System"><![CDATA[USERACCOUNT <> "1"]]></Publish>

然后我尝试在安装服务的组件中选取帐户属性:

<Component Id="Service" Guid="*" >
  <File Id="ServiceExe" KeyPath="yes" Source="$(var.ServiceFiles)\Service.exe" />
  <ServiceInstall Vital="yes" ErrorControl="ignore" Type="ownProcess" Account="[Account]" Name="$(var.ServiceName)" Description="Service running as [Account]" Start="auto" />
  <ServiceControl Id="ServiceControl" Remove="both" Name="$(var.ServiceName)" Start="install" Stop="both"/>
</Component>

我的问题是,此组件不使用为 [帐户] 发布的值,即使我可以看到安装程序日志中的属性事件正在发布正确的值。所以我的问题是如何确保服务安装程序组件选择我的自定义对话框发布的 [帐户] 值?

1 个答案:

答案 0 :(得分:3)

使用public property,例如ACCOUNT。私有属性在InstallExecuteSequence中丢失其修改后的值。

此外,在为特定帐户安装服务时,请确保为该帐户设置了Log on as a service policy。否则,安装后服务将无法启动。