我正在为一组医疗设备SW产品编写WiX安装程序,这些产品必须安装在C:的根目录下的特定目录中。 IE no" ProgramFolders"对于这些。
它们在专用环境中运行,并已使用这些目录进行验证和验证。
我有一个自定义欢迎对话框,其中包含一个组合框:
<Control Id="TypeCombo" Type="ComboBox" X="178" Y="162" Width="120" Height="20" Property="InstallChoiceResult" ComboList="yes" Sorted="no">
<ComboBox Property="InstallChoiceResult">
<ListItem Text="Base dev 1" Value="1"/>
<ListItem Text="Base dev 2" Value="2"/>
<ListItem Text="Base dev 3" Value="3"/>
<ListItem Text="Base Simulator" Value="4"/>
</ComboBox>
</Control>
FSE的选择设置属性&#34; InstallChoiceResult&#34;。在他们点击下一步后,我需要根据他们的选择设置我的应用程序文件夹。 IE如果他们选择&#34; Base dev 1&#34;然后我需要将APPLICATIONFOLDER设置为C:\ BASEDEV1。如果他们选择Base dev 2,那么我们转到C:\ BASEDEV2
成为WiX的新手,我对这个序列感到不满。从Orca检查我的MSI看来,在成本计算发生之后,InstallUISequence就出现了。当我尝试使用一组自定义操作设置APPLICATION文件夹时,它会抱怨,因为它是一个目录,所以必须在CostFinalize之前设置它。
我确定我错过了一些简单的东西但是如果我的UI似乎在运行之后我怎么能设置我需要的目录呢?我的自定义操作目前看起来像:
<CustomAction Id="SetDev1" Property="APPLICATIONFOLDER" Value="C:\BaseDev1" Execute="immediate" />
<CustomAction Id="SetDev2" Property="APPLICATIONFOLDER" Value="C:\BaseDev2" Execute="immediate" />
<CustomAction Id="SetDev3" Property="APPLICATIONFOLDER" Value="C:\BaseDev3" Execute="immediate" />
<CustomAction Id="SetDevS" Property="APPLICATIONFOLDER" Value="C:\BaseDevS" Execute="immediate" />
<InstallUISequence>
<Custom Action="SetDev1" Before="InstallDlg2">InstallChoiceResult=1</Custom>
<Custom Action="SetDev2" Before="InstallDlg2">InstallChoiceResult=2</Custom>
<Custom Action="SetDev3" Before="InstallDlg2">InstallChoiceResult=3</Custom>
<Custom Action="SetDevS" Before="InstallDlg2">InstallChoiceResult=4</Custom>
</InstallUISequence>
我需要做的总体笑话基本上是这样的:
显示对话框(FSE选择1,2,3或模拟器) 按下next后,根据ComboBox中的属性设置ApplicationFolder 安装到设置ApplicationFolder
非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用 SetDirectory 元素将目录值设置为APPLICATIONFOLDER。无需使用自定义操作并将目录值直接绑定到List项。使组合框属性为public(所有字母均为大写)。
<Control Id="TypeCombo" Type="ComboBox" X="142" Y="158" Width="120" Height="16" Property="INSTALLCHOICERESULT" ComboList="yes" Sorted="no">
<ComboBox Property="INSTALLCHOICERESULT">
<ListItem Text="Base dev 1" Value="C:\BaseDev1" />
<ListItem Text="Base dev 2" Value="C:\BaseDev2" />
<ListItem Text="Base dev 3" Value="C:\BaseDev3" />
<ListItem Text="Base Simulator" Value="C:\BaseDevS" />
</ComboBox>
</Control>
<SetDirectory Id="APPLICATIONFOLDER" Value="[INSTALLCHOICERESULT]" Sequence="execute" />