目前我已經定製了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