Wix学习整理(5)——安装时填写注册表
2015-12-18 17:33
387 查看
一 Microsoft操作系统的注册表
HKMU:全称HKEY_CURRENT_CONFIG,存储计算机当前的硬件配置信息。
HKCR:全称HKEY_CLASSES_ROOT,存储Windows可识别的文档类型的详细列表,以及相关联的程序。
HKCU:全称HKEY_CURRENT_USER,存储当前用户设置的信息。
HKLM:全称HKEY_LOCAL_MACHINE,存储安装在计算机上的硬件和软件的信息。
HKU:全称HKEY_USERS,存储使用本计算机的用户信息。
对注册表有了基本的了解,下面我们通过为HelloWorld案例添加注册表信息来学习一下Wix中关于注册表的一些基础知识。
下面这个文件片段展示了如何填写两个注册实体,一个关联指定值而另一个关联默认值。
<DirectoryRef Id="TARGETDIR">
<Component Id="RegistryEntry" Guid="C26D6547-BB6B-49C3-9286-8DCDC1961B3D">
<RegistryKey Root="HKCU" Key="Software\Microsoft\HelloWorld">
<RegistryValue Type="integer" Name="Installed" Value="1" KeyPath="yes" />
<RegistryValue Type="string" Value="Default Value" />
</RegistryKey>
</Component>
</DirectoryRef>
关于<DirectoryRef>和<ComponentRef>就分别是<Directory>和<Component>元素的引用,这里我们就不多做介绍。
通过<RegistryKey>元素创建的注册实体指出了将注册键值对填写在何处。这个实例中指出的位置是HKey_CURRENT_USER\Software\Microsoft\HelloWorld。在<RegistryKey>元素下,通过<RegistryValue>元素来创建具体的键值对。上面片段中的第一个<RegistryValue>创建了一个名称为Installed,类型为integer,值为1的键值对,并且将该元素设为KeyPath(用于Windows
Installer判断所属的Component是否已安装)。第二个<RegisterValue>元素则创建了类型为string,值为”Default Value”的默认键值对。
接下来,则需要将上面的<Component>元素包含在一个<Feature>中以便安装。
上面的这个文件片段显示,我们将注册实体所在的Component和HelloWorld.exe文件所属的Component放在同一个Feature中(当然你也可以放在不同的Feature中,这个得看你自己的意愿,也要看产品的逻辑)。
于是,我们的Wix源文件就完成了,下面是完成的Wix源文件。
我们将该文件保存为Product.wxs,然后运行编译和链接命令,
就生成的了我们的安装包.msi文件。
双击我们生成的.msi文件,完成安装后,打开regedit.exe文件,然后在HKey_CURRENT_USER\Software\Microsoft\HelloWorld,我们就可以找到我们填写的注册键值对。
在默认情况下,当我们下载掉HelloWorld时,我们创建的注册信息也将一并删除。
什么是注册表?
注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。详细介绍参考维基百科——注册表。如何操作注册表?
通过工具Windows操作系统自带工具regedit.exe即可对注册表进行添加、删除、修改等操作。注册表的五个分支
注册表有五种分支:HKMU、HKCR、HKCU、HKLM和HKU。下面对这五种注册表分支进行简单介绍,HKMU:全称HKEY_CURRENT_CONFIG,存储计算机当前的硬件配置信息。
HKCR:全称HKEY_CLASSES_ROOT,存储Windows可识别的文档类型的详细列表,以及相关联的程序。
HKCU:全称HKEY_CURRENT_USER,存储当前用户设置的信息。
HKLM:全称HKEY_LOCAL_MACHINE,存储安装在计算机上的硬件和软件的信息。
HKU:全称HKEY_USERS,存储使用本计算机的用户信息。
二 为HelloWorld案例添加注册表信息
对注册表有了基本的了解,下面我们通过为HelloWorld案例添加注册表信息来学习一下Wix中关于注册表的一些基础知识。下面这个文件片段展示了如何填写两个注册实体,一个关联指定值而另一个关联默认值。
<DirectoryRef Id="TARGETDIR">
<Component Id="RegistryEntry" Guid="C26D6547-BB6B-49C3-9286-8DCDC1961B3D">
<RegistryKey Root="HKCU" Key="Software\Microsoft\HelloWorld">
<RegistryValue Type="integer" Name="Installed" Value="1" KeyPath="yes" />
<RegistryValue Type="string" Value="Default Value" />
</RegistryKey>
</Component>
</DirectoryRef>
关于<DirectoryRef>和<ComponentRef>就分别是<Directory>和<Component>元素的引用,这里我们就不多做介绍。
通过<RegistryKey>元素创建的注册实体指出了将注册键值对填写在何处。这个实例中指出的位置是HKey_CURRENT_USER\Software\Microsoft\HelloWorld。在<RegistryKey>元素下,通过<RegistryValue>元素来创建具体的键值对。上面片段中的第一个<RegistryValue>创建了一个名称为Installed,类型为integer,值为1的键值对,并且将该元素设为KeyPath(用于Windows
Installer判断所属的Component是否已安装)。第二个<RegisterValue>元素则创建了类型为string,值为”Default Value”的默认键值对。
接下来,则需要将上面的<Component>元素包含在一个<Feature>中以便安装。
<Feature Id="ProductFeature" Title="HelloWorld" Level="1"> <ComponentRef Id="ProductComponent" /> <ComponentRef Id="RegistryEntry" /> </Feature>
上面的这个文件片段显示,我们将注册实体所在的Component和HelloWorld.exe文件所属的Component放在同一个Feature中(当然你也可以放在不同的Feature中,这个得看你自己的意愿,也要看产品的逻辑)。
于是,我们的Wix源文件就完成了,下面是完成的Wix源文件。
我们将该文件保存为Product.wxs,然后运行编译和链接命令,
candle Product.wxs light Product.wixobj –out HelloWorld.msi –ext "C:\Program Files\WiX Toolset v3.6\bin\WixUIExtension.dll"
就生成的了我们的安装包.msi文件。
三 验收我们的成果
双击我们生成的.msi文件,完成安装后,打开regedit.exe文件,然后在HKey_CURRENT_USER\Software\Microsoft\HelloWorld,我们就可以找到我们填写的注册键值对。 在默认情况下,当我们下载掉HelloWorld时,我们创建的注册信息也将一并删除。
相关文章推荐
- 使用最原始的http-post方式上传图片 ,上传工具类已封装 可直接使用
- Spark集成Kafka源码分析——SparkStreaming从kafak中接收数据
- sql中的now()方法
- 多台日志汇聚一个terminal实例
- java提高篇(十一)-----代码块
- Oracle、MySql、SQLServer 数据分页查询
- flume的配置
- 事件的解除与绑定
- Windows2008r2主域和从域传输的问题
- nginx的配置、虚拟主机、负债均衡和反向代理(2)
- 重启博客,继续开始个人的旅行
- IOS判断日期是今天,昨天还是明天
- 获得本月的第一天和最后一天
- java提高篇(十)-----强制类型转换
- linux 后台任务,screen命令
- 送给正在 奋斗和成长路上的女人们
- 第13周项目2-Kruskal算法的验证
- 用纯php实现MVC框架,文件目录模仿yii2
- Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析
- 斯坦福机器学习课程笔记week2&3 线性/逻辑斯蒂回归