[英]wix - fill edit-control with value from registry
在安裝我的服務期間,安裝程序正在將 SQL 服務器的名稱寫入注冊表。 我創建了一個對話框 window,其中包含edit
控件,用戶將在其中鍵入服務器名稱。 現在我想用 ChangeMode 中的注冊表值填充這個控件。 如果此注冊表項為空,則填充一些默認名稱。 怎么可能解決呢? 我試圖將RegistrySearch
節點放入Control
節點。 但在我看來它不起作用..任何幫助表示贊賞
PS在這里查看了一些信息: link1 。 並嘗試了如下代碼:
<Property Id="SERVCONNSTR" Value=".\SQLEXPRESS">
</Property>
<Property Id="CONNSEARCH">
<RegistrySearch Id="servconstr" Root="HKLM"
Key="Software\$(var.Manufacturer)\SERVICE" Name="SQL Server" Type="raw"></RegistrySearch>
</Property>
<SetProperty Id="SERVCONNSTR" Value="CONNSEARCH"
After="AppSearch"><![CDATA[CONNSEARCH AND (!FEATURE1=3 OR !FEATURE2=3 OR !FEATURE3=3)]]></SetProperty>
但我仍然在修改過程中獲得.\SQLEXPRESS 編輯控制。
我做錯了什么?
將RegistrySearch放入一個Property中,並將該屬性綁定到Control 。
我不知道您為什么要使用兩個屬性,如果您使用 registrySearch 設置屬性 CONNSEARCH,它將檢查注冊表並將在那里找到的值(如果存在)分配給它。 這發生在大多數 UI 發生之前的 AppSearch 階段,即您的編輯框所在的位置。 因此,您也不需要使用 SetProperty。
您想用默認值填充注冊表項,還是用默認值填充您的屬性?
對於屬性,只需填寫使用注冊表搜索的屬性元素的 Value 屬性。 如上所述,如果在注冊表中找不到任何內容,它將默認為。
它看起來像這樣;
<
<Property Id="CONNSEARCH" Value="DefaultValue">
<RegistrySearch Id="servconstr" Root="HKLM"
Key="Software\$(var.Manufacturer)\SERVICE" Name="SQL Server" Type="raw"></RegistrySearch>
</Property>
在 Appsearch 之后,您的屬性將被設置,如果您的控件綁定到該屬性,它將填充該值。 如果注冊表中沒有任何內容,這也會將您的默認屬性值設置為“DefaultValue”。
要為注冊表中的鍵創建默認值,我想只需將 registryKey/RegistryValue 元素放在將始終安裝在這種情況下的組件中,如果您沒有在其他任何地方設置它,則將該鍵設置為默認值.
最好的
<Property Id="SERVCONNSTR" Value=".\SQLEXPRESS">
</Property>
<Property Id="CONNSEARCH">
<RegistrySearch Id="servconstr" Root="HKLM"
Key="Software\$(var.Manufacturer)\SERVICE" Name="SQL Server" Type="raw"></RegistrySearch>
</Property>
<SetProperty Id="SERVCONNSTR" Value="[CONNSEARCH]"
After="AppSearch">CONNSEARCH</SetProperty>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.