WIX安装程序 - 将变量传递到下一个窗口

时间:2016-04-14 17:55:23

标签: installation wix windows-installer

我正在尝试实施下一个方案: '欢迎对话' - > '服务名称对话框' - > '安装路径对话框'

服务名称对话框是自定义对话框。用户应输入服务名称,按“下一步”按钮后 - 在“安装路径”对话框中显示默认路径,如“..... \ inserted_value_on_previous_window”。

在“服务名称对话框”中,我将Edit Control实现为:

<Control Id="ServiceValueEdit" Type="Edit" X="15" Y="60" Width="200" Height="15" Property="WIXUI_SELECTEDSERVICENAME" Indirect="yes" />

因此应该设置WIXUI_SELECTEDSERVICENAME属性。 要在“安装路径对话框”中设置默认安装路径,我使用以下代码:

<Property Id="WIXUI_SELECTEDSERVICENAME" Value="SELECTEDSERVICENAME"></Property>

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"></Property>  

<SetDirectory Id="INSTALLDIR" Value="[DEFIISFOLDER]\[WIXUI_SELECTEDSERVICENAME]" Sequence="both"></SetDirectory>

但是,不幸的是,当我们进入“服务名称对话框”并设置任何值时 - 它不会反映在下一个屏幕上。下一个窗口将具有默认值SELECTEDSERVICENAME。我认为它在编译时只设置了一个,并且在运行时没有得到更新。

任何人都可以帮忙说明如何从一个窗口设置该值并将其转换为下一个窗口? 谢谢。

这里要清楚的是两个屏幕截图: Service name dialog

所以我想做的是让这个字符串下面的对话框包含'name'(如图所示),而不是下面列出的'SELECTEDSERVICENAME'。

enter image description here

1 个答案:

答案 0 :(得分:1)

在初始安装过程中,您正在将INSTALLDIR的值设置为[DEFIISFOLDER] [WIXUI_SELECTEDSERVICENAME]。这意味着在设置INSTALLDIR属性时使用的是WIXUI_SELECTEDSERVICENAME的初始值。

当您切换将更新installdir的UI页面时,您需要发布一个事件。

我认为类似于:

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" />
  <Publish Property="INSTALLDIR" Value="[DEFIISFOLDER]\[WIXUI_SELECTEDSERVICENAME]">1</Publish>
</Control>

将使用新的WIXUI_SELECTEDSERVICENAME值更新INSTALLDIR属性。