WIX 安装程序 - 将变量传递给下一个 window

WIX installer - pass variable to the next window

我正在尝试实现下一个场景: 'Welcome dialog' -> 'Service name dialog' -> 'Installation path dialog'

服务名称对话框是自定义的。用户应该输入服务的名称并在按下 'Next' 按钮后 - 在 'Installation path dialog' 应该出现默认路径,如“.....\inserted_value_on_previous_window”。

在 'Service name dialog' 我实现了编辑控件,例如:

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

所以应该设置WIXUI_SELECTEDSERVICENAME属性。 要在 'Installation path dialog' 设置默认安装路径,我使用如下代码:

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

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

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

但是,不幸的是,当我们转到 'Servic name dialog' 并设置任何值时 - 它不会反映在下一个屏幕上。下一个 window 将始终具有默认值 SELECTEDSERVICENAME。我认为它在编译时只设置了一个,在运行时不会更新。

任何人都可以帮助弄清楚如何从一个 window 中设置此值并将其转移到下一个? 谢谢。

为了清楚起见,这里有两张截图:

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

您在安装的初始设置期间将 INSTALLDIR 的值设置为 [DEFIISFOLDER][WIXUI_SELECTEDSERVICENAME]。这意味着您在设置 INSTALLDIR 属性.

时使用 WIXUI_SELECTEDSERVICENAME 的初始值

您需要在切换 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 属性。