wix - Wix 在属性中存储路径
问题描述
我一直在努力解决这个 Wix 安装程序的问题。我需要做的是将安装人员选择的 JRE 路径存储在一个属性中(我认为我需要这样做)。拥有该属性后,我打算在安装结束时以某种方式使用它,将值写入文件..
问题是我似乎无法将 DirectoryCombo/DirectoryList/PathEdit 的值存储在属性中......
我的代码是这样的:
<!-- I use this to initialize the JREPATH to the most likely path..This works as expected -->
<CustomAction Id='INIT_JREPATH' Property='JREPATH' Value='[ProgramFilesFolder]\Java' Execute='firstSequence' />
<!-- When this button is clicked, a new dialog is opened, where the UI elements have the path initialized above..This works as expected.. -->
<Control Id='BrowseButton' Type='PushButton' X='276' Y='126' Width='90' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}B&rowse...' TabSkip='no'>
<Publish Property='SelectJreFolderDialog_Property' Value='JREPATH'><![CDATA[1]]></Publish>
<Publish Event='SpawnDialog' Value='SelectJreFolderDialog'><![CDATA[1]]></Publish>
</Control>
<!-- This is where I got stuck -->
<Dialog Id='SelectJreFolderDialog' X='50' Y='50' Width='313' Height='223' Title='Browse for JRE Installation Folder' NoMinimize='yes'>
<Control Id='OKButton' Type='PushButton' X='168' Y='198' Width='66' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}OK' TabSkip='no' Default='yes'>
**<!-- The code from below are various attempts that I tried to set the property at button click**
<Publish Property='SelectJreFolder_Property' Value='C:\Program Files (x86)\Java\jre1.8.0_181'><![CDATA[1]]></Publish>
<Publish Event='SetProperty' Value='[SelectJreFolderDialog_Property]'><![CDATA[1]]></Publish>
<!-- <Publish Event='SetTargetPath' Value='[SelectJreFolderDialog_Property]'><![CDATA[1]]></Publish> -->
<Publish Event='EndDialog' Value='Return'><![CDATA[1]]></Publish>
</Control>
<Control Id='CancelButton' Type='PushButton' X='240' Y='198' Width='66' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}Cancel' TabSkip='no' Cancel='yes'>
<Publish Event='Reset' Value='{}'><![CDATA[1]]></Publish>
<Publish Event='EndDialog' Value='Return'><![CDATA[1]]></Publish>
</Control>
<Control Id='BrowseText' Type='Text' X='6' Y='9' Width='60' Height='12' Text='{\VSI_MS_Sans_Serif13.0_0_0}&Browse:' TabSkip='no' />
<Control Id='FolderCombo' Type='DirectoryCombo' X='66' Y='6' Width='198' Height='120' Property='SelectJreFolderDialog_Property' Text='{\VSI_MS_Sans_Serif13.0_0_0}MsiDirectoryCombo' TabSkip='no' Indirect='yes' Removable='yes' Fixed='yes' Remote='yes' RAMDisk='yes' Floppy='yes'>
<Publish Property='SelectJreFolder_Property' Value= '[SelectJreFolderDialog_Property]' ><![CDATA[1]]></Publish>
</Control>
<!-- I have other elements here, a DirectoryList and a PathEdit, basically different approaches to selec the needed path..I did not add them because I don't think that they are relevant -->
</Dialog>
问题是……这不起作用……当我尝试设置该值时,下一个对话框中实际发生的是我得到的值是“JREPATH”,而不是执行安装的人选择的……ex C:\blsa bla\java
我怎样才能解决这个问题 ?有什么建议吗?...如果可能的话,最好的方法是在按下 Ok 时存储 DirectoryCombo 中的值...不确定这有多可行..
非常感谢!
解决方案
<Publish Property='SelectJreFolderDialog_Property' Value='JREPATH'><![CDATA[1]]></Publish>
您需要将 Value 设置为 [JREPATH],如下所示:
<Publish Property='SelectJreFolderDialog_Property' Value='[JREPATH]'><![CDATA[1]]></Publish>
推荐阅读
- sql - 如何在 SQL 中从表中找到至少连续 3 个月销售额增长的所有卖家?
- java - 如何在基本适配器中停止文本到语音
- python - 如何将值映射到颜色条以自定义条形图颜色
- c++ - stat() 相对于文件系统是原子的
- apache-spark - Apache Spark 无法读取使用流式作业编写的 parquet 文件夹
- c# - PrivateFontCollection 系列不可靠,迭代次数越多
- c++ - constexpr 适用于 Ubuntu,但不适用于 MacOS
- mongodb - MongoDB外壳安装
- python - 我该如何解决这个关于 215:Assertion failed 的问题?
- java - 单击另一个活动时如何发送自定义arraylist的列表项的数据?