wix - заполнить edit-control значением из реестра - PullRequest
0 голосов
/ 01 июля 2011

Установщик записывает имя SQL Server в реестр во время установки моей службы. И я создал диалоговое окно с edit контролем, где пользователь будет вводить имя сервера. Теперь я хочу заполнить этот элемент управления значением из реестра в ChangeMode. И если этот раздел реестра пуст для заполнения каким-либо именем по умолчанию. Как это можно решить? Я попытался поместить RegistrySearch узел в Control узел. Но мне кажется, это не работает .. Любая помощь приветствуется

P.S. Посмотрел немного информации здесь: 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 в edit-control во время модификации.

Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 01 июля 2011

Поместите RegistrySearch в Свойство и привяжите это свойство к Control .

0 голосов
/ 02 августа 2013

Я не знаю, почему вы используете два свойства. Если вы установите свойство CONNSEARCH с помощью registrySearch, оно проверит реестр и присвоит ему найденное там значение, если оно есть. Это происходит на этапе AppSearch задолго до того, как произойдет большинство пользовательских интерфейсов, где будет находиться ваше поле редактирования. Так что вам не нужно использовать SetProperty.

Вы хотите заполнить раздел реестра значением по умолчанию или ваше свойство значением по умолчанию?

Для свойства просто заполните атрибут Value элемента свойства, который использует поиск в реестре. Это будет по умолчанию, если в реестре ничего не найдено, как я сказал выше.

Это будет выглядеть так:

<</p>

<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 в компонент, который всегда будет установлен в этом сценарии, и установите для этого ключа значение по умолчанию, если вы не установите это где-то еще.

Лучший

0 голосов
/ 02 июля 2011
<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>
...