原文:Wix学习整理(5)——安装时填写注册表

一 Microsoft操作系统的注册表

什么是注册表?

注册表是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

我们将该文件保存为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时,我们创建的注册信息也将一并删除。

Wix学习整理(5)——安装时填写注册表的更多相关文章

  1. Wix学习整理(6)——安装快捷方式

    原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注 ...

  2. Wix学习整理(2)——HelloWorld安装添加UI

    原文:Wix学习整理(2)--HelloWorld安装添加UI 在前一篇随笔Wix学习整理(1)——快速入门HelloWorld中,我们制作的安装包安装界面太简单,没有与用户进行交互的过程.下面我们修 ...

  3. Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式

    原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...

  4. Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析

    原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows In ...

  5. Wix学习整理(3)——关于Windows Installer和MSI

    原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和 ...

  6. Wix学习整理(1)——快速入门HelloWorld

    原文:Wix学习整理(1)--快速入门HelloWorld 1 Wix简介 Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Instal ...

  7. C# Winform打包部署时添加注册表信息实现开机启动

    使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 1.添加安装部署项目后,鼠标右键安装项目->视图->注册表,HK ...

  8. 【转】C# Winform打包部署时添加注册表信息实现开机启动

    使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 1.添加安装部署项目后,鼠标右键安装项目->视图->注册表,HK ...

  9. C# Winform打包部署时添加注册表信息实现开机自启动

    1.原理:需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下 2. 写入注册表的方式有两种 a.在生成安装程序时配置 b.在程序运行时,动态配置 方法一:使用VS2010自带的打包 ...

随机推荐

  1. EasyUI - Resizable 调整大小

    效果: html代码: <div id="rr" style="width: 100px; height: 100px; border: 2px solid #cc ...

  2. Servlet的学习之web路径问题

    在这个篇章中,我们来学习下在web开发过程中会碰到的路径写法问题. 在之前的web应用开发,尤其是Servlet的学习过程中,我们碰到多次要写路径的问题,这些路径并不统一,因此这里将大致说明下各个方法 ...

  3. POJ3678【错误总会让自己有收获的】

       首先我是的确确定了LRJ那个代码也是判断一个点的两种状态是否在一个连通分量内.    关于自己做的,自己又确定了一些,让自己那样先,比如说对于 3 6 1 AND这样3 6都已经确定的点,自己用 ...

  4. android:改动PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色

    1.改动PagerTabStrip中的背景颜色 我们在布局中直接设置background属性就可以: <android.support.v4.view.ViewPager android:id= ...

  5. 【c语言】统计一个数二进制中的1的个数

    // 统计一个数二进制中的1的个数 #include <stdio.h> int count(int a) { int count = 0; while (a) { count++; a ...

  6. 积累的VC编程小技巧之对话框

    1.用鼠标移动基于对话框的无标题栏程序的简单方法 void CVCTestDlg::OnLButtonDown(UINT nFlags, CPoint point) {    //一句话解决问题    ...

  7. VC/MFC ListCtrl 控件功能使用汇总(转)

    以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...

  8. adb 之android的神器am

    am命令,am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等 命令窗口通过adb shell ...

  9. [黑马程序员] 集合框架2——Map系 & 集合工具类(Collections、Arrays)

    ---------------------- ASP.Net+Android+IO开发..Net培训.期待与您交流! ---------------------- 0. 集合框架按其所实现的接口, 大 ...

  10. Linux目录结构和常用命令

    源地址:http://www.cnblogs.com/JCSU/articles/2770249.html 一.Linux目录结构 你想知道为什么某些程序位于/bin下,或者/sbin,或者/usr/ ...