目前我已经定制了Wix_InstallDirDlg以使用户能够在安装时设置注册表项。在InstallDirDlg和MaintenanceTypeDlg后面都会显示一个自定义对话框,以便它可以同时满足安装和修复情况。Wix安装程序在修复时清空注册表设置
自定义对话框有一个链接到属性的单个文本框。此属性具有注册表搜索功能,因此如果用户修复或升级,则先前的值将保留下来,并显示在自定义对话框中以供用户验证。该对话框在安装时工作正常,并且创建了注册表项。但是,在修复时,自定义对话框显示输入正确的注册表值(因此RegistrySearch正在运行),但修复完成后,键值为空。
<Property Id='SERVER_LISTEN_URL'>
<RegistrySearch Id='ServerListenUrlRegSearch' Root='HKLM'
Key='SOFTWARE\$(var.Manufacturer)\$(var.Name)'
Name='ServerListenUrl'
Type='raw' Win64='no' />
</Property>
<Component Id="RegistryEntries" Guid="0234974B-6158-4312-90A7-56869809B42E">
<RegistryKey Id="ServerRegKey"
Root="HKLM"
Key='SOFTWARE\$(var.Manufacturer)\$(var.Name)'
Action='createAndRemoveOnUninstall'>
<RegistryValue Id="ServerListenUrlRegVal"
Name='ServerListenUrl'
Value='[SERVER_LISTEN_URL]'
KeyPath='yes'
Type='string' />
</RegistryKey>
</Component>
<Dialog Id="SettingsDlg">
<Control Id="ListenUrl" Type="Edit" X="20" Y="100" Width="320" Height="18" Property="SERVER_LISTEN_URL" Indirect="no" />
</Dialog>
我做了什么错了?
感谢您的澄清,它现在是有道理的,为什么它没有工作。 Wix编译器(或Orca)无法检测到我正在使用应该需要安全的属性,这真是令人遗憾! – 2011-05-15 08:45:51
我同意穴居人。在Windows安装程序中有很多陷阱。 Wix实际上确实帮助你多一点,但仍有改进的余地。 – 2011-05-15 14:39:23