如何在Wix安装程序UI中设置用户可修改的属性以更改安装路径
实现步骤
- 给
THISONE公共属性添加Secure标记,避免安装权限提升后用户输入的路径丢失 - 引入WixUI扩展,自定义仅带路径输入框的极简对话框,将文本框值绑定到
THISONE属性 - 调整安装UI序列,跳过不需要的默认界面,仅保留自定义路径输入环节
完整修改后代码
<!-- 原有逻辑修改部分 --> <Fragment> <!-- 新增Secure="yes",保证用户输入的属性值在安装提升阶段不会丢失 --> <Property Id="THISONE" Value="C:\MyFolder" Secure="yes"/> <Directory Id='TARGETDIR' Name='SourceDir'> <Directory Id='APPLICATIONFOLDER' ComponentGuidGenerationSeed="{75266e3e-3781-47e3-ac29-46a2d90548f9}"> <Directory Id='MyFolder' Name='MyFolder'/> </Directory> </Directory> <SetDirectory Id='APPLICATIONFOLDER' Value='[THISONE]' /> </Fragment> <Fragment> <Component Id="Component1" Directory="MyFolder" Win64="yes"> <File Id="FirstFile.txt"/> </Component> </Fragment> <!-- 新增极简UI部分 --> <Fragment> <UI Id="MinimalPathUI"> <!-- 引用Wix内置的基础UI结构和进度页 --> <UIRef Id="WixUI_Common" /> <!-- 自定义路径输入对话框 --> <Dialog Id="CustomPathDlg" Width="370" Height="270" Title="选择安装路径"> <Control Id="PathLabel" Type="Text" X="20" Y="60" Width="330" Height="15" Text="请输入文件安装路径:" /> <!-- 文本框绑定THISONE属性,用户输入会直接更新THISONE的值 --> <Control Id="PathEdit" Type="Edit" X="20" Y="80" Width="300" Height="18" Property="THISONE" /> <Control Id="NextButton" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="下一步"> <Publish Event="EndDialog" Value="Return">1</Publish> </Control> <Control Id="CancelButton" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="取消"> <Publish Event="EndDialog" Value="Cancel">1</Publish> </Control> </Dialog> <!-- 配置UI序列,仅显示自定义路径输入框,之后直接进入安装流程 --> <InstallUISequence> <Show Dialog="CustomPathDlg" Before="ExecuteAction" /> </InstallUISequence> </UI> </Fragment> <!-- 在你的Product节点内添加UI引用 --> <Product ...> <!-- 其他Product配置 --> <UIRef Id="MinimalPathUI" /> </Product>
编译注意事项
编译时需要添加WixUIExtension引用,如果你用命令行编译,命令格式如下:
candle yourfile.wxs light yourfile.wixobj -ext WixUIExtension
如果用Visual Studio的Wix Toolset项目,直接在项目的「引用」中添加WixUIExtension即可。
内容的提问来源于stack exchange,提问作者Lelouch
相关产品推荐
相关产品推荐

