簡體   English   中英

wix - 用注冊表中的值填充編輯控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM