wix-使用注册表中的值填充编辑控件
在安装“我的服务”期间,安装程序正在将SQL Server的名称写入注册表。 我创建了一个带有wix-使用注册表中的值填充编辑控件,wix,properties,edit-control,Wix,Properties,Edit Control,在安装“我的服务”期间,安装程序正在将SQL Server的名称写入注册表。 我创建了一个带有edit控件的对话框窗口,用户将在其中键入服务器名。现在我想用ChangeMode中注册表中的值填充这个控件。如果此注册表项为空,则用默认名称填充。 怎么可能解决呢? 我试图将RegistrySearch节点放入Control节点。但在我看来,它似乎不起作用。。 谢谢你的帮助 p.S.在这里查看了一些信息:。并尝试了如下代码: <Property Id="SERVCONNSTR" Value=".
edit
控件的对话框窗口,用户将在其中键入服务器名。现在我想用ChangeMode中注册表中的值填充这个控件。如果此注册表项为空,则用默认名称填充。
怎么可能解决呢?
我试图将RegistrySearch
节点放入Control
节点。但在我看来,它似乎不起作用。。
谢谢你的帮助
p.S.在这里查看了一些信息:。并尝试了如下代码:
<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设置属性CONNSEARCH,它将检查注册表并为其分配在那里找到的值(如果存在)。这发生在AppSearch阶段,远远早于大多数UI的出现,您的编辑框将位于该阶段。因此,您也不需要使用SetProperty
是要用默认值填充注册表项,还是要用默认值填充属性
对于属性,只需填充使用注册表搜索的属性元素的Value属性。如前所述,如果在注册表中找不到任何内容,它将默认为
它看起来像这样
谢谢你的时间,燕。我找到了解决办法。
<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>
<Property Id="CONNSEARCH" Value="DefaultValue">
<RegistrySearch Id="servconstr" Root="HKLM"
Key="Software\$(var.Manufacturer)\SERVICE" Name="SQL Server" Type="raw"></RegistrySearch>
</Property>