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 属性。
我正在尝试实现下一个场景: '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 属性。