如何:在执行安装时写注册表键值

如何:在执行安装时写注册表键值

安装时写入注册表键值与安装时写入文件非常相似。定义一个需要写入的注册表树形目录,指定要创建的注册表值,添加Component到Feature列表中。

第一步:定义注册表结构(layout)和值

下面的例子描述了如何写两个注册表键值,其中一个使用指定值另一个使用默认值。

<DirectoryRef Id="TARGETDIR">
    <Component Id="RegistryEntries" Guid="PUT-GUID-HERE">
        <RegistryKey Root="HKCU"
                     Key="Software\Microsoft\MyApplicationName"
              Action="createAndRemoveOnUninstall">
            <RegistryValue Type="integer" Name="SomeIntegerValue" Value="1" KeyPath="yes"/>
            <RegistryValue Type="string" Value="Default Value"/>
        </RegistryKey>
    </Component>
</DirectoryRef>
这个片段以DirectoryRef开始,指向Windows Installer 预定义的TARGETDIR目录。这样做实际上是表明注册表项是安装到目标机器上。在DirectoryRef下面是一个Component元素将所有要写入的注册表项归类到一起。Component被赋予一个稍后WiX工程中用到的ID和一个唯一的GUID。

要创建注册表键值首先要使用<RegistryKey>元素来指定要创建键值的位置。本例中的键值是在HKEY_CURRENT_USER\Software\Microsoft\MyApplicationName下面。可选属性Action是用来告诉Windows Installer 键值需要在安装时被创建(如果需要的话),并且该键值及其子项在安装包卸载时应该被删除。

RegistryKey元素下面的<RegistryValue>元素是真正用来创建注册表键值的元素。 第一个是integer类型的SomeIntegerValue值,并且值为1。同时它被标记为Component的KeyPath,Windows Installer凭此来检测Component是否已经在目标机器上安装。第二个RegistryValue元素为键值设置了一个string类型的值“Default Value”。

RegistryKey和RegistryValue元素的ID属性被省略了是因为在WiX工程文件的其他地方不需要引用它们。WiX会依据注册表的键、值和父Component的name自动生成ID。

第二步:告诉Windows Installer安装注册表键值

在定义了需要打包的结构并列出了注册表键值之后,最后一步是告诉Windows Installer如何安装注册表键值。<Feature>元素就是用来做这个的。下面的片段添加了一个指向注册表引用注册表键值Component的引用,该片段要插入在一个Feature元素中。

<ComponentRef Id="RegistryEntries" />

<ComponentRef>通过ID属性引用第一步中创建的Component。

posted on 2010-10-05 01:01  nGn  阅读(1769)  评论(2编辑  收藏  举报