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

原文: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时,我们创建的注册信息也将一并删除。

时间: 2024-09-19 00:33:52

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

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

原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注册信息的基础上为HelloWorld的安装包添加安装快捷方式.下面我们将以安装开始菜单快捷方式为实例详细地阐述一下Wix的关于安装快捷方式的基础知识. 首先,我们要定义好目录结构. 开始菜单快捷方式的安装目录结构与应用软件的实际安装目录结构不一样. <Directory Id="Program

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

原文:Wix学习整理(2)--HelloWorld安装添加UI 在前一篇随笔Wix学习整理(1)--快速入门HelloWorld中,我们制作的安装包安装界面太简单,没有与用户进行交互的过程.下面我们修改Wix源文件来给安装程序添加UI. 1 Wix的预定义UI简介 Wix toolset提供的WixUIExtension.dll包(在目录C:\Program Files\WiX Toolset v3.6\bin下)中提供了五种UI对话框集合,分别是WixUI_Advanced.WixUI_Fea

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

原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些在安装时添加的内容,在卸载时也会自动地删除.但是,到目前为止,我们的卸载只有两种方式:通过原始安装包或控制面板中的卸载或更改程序.现在,我们来学习Wix如何为我们的HelloWorld在安装时在开始菜单中提供卸载的快捷方式. 一 添加卸载快捷方式 添加卸载的快捷方式也是通过<Shortcut>元素

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

原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows Installer安装数据包.msi文件所需的信息. .wxs的文件格式为: <?xml version="1.0"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> - </Wi

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

原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和配置服务,其实现了软件安装的业务逻辑:如何安装软件?如何修改注册表键值?如何创建快捷方式?如何操作网站目录或注册服务?等等.Windows Installer技术由两部分组成:客户端安装程序服务(Msiexec.exe)和Microsoft软件安装包文件(MSI). 关于MSI Windows In

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

原文:Wix学习整理(1)--快速入门HelloWorld 1 Wix简介 Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Installer安装包数据库的元素.关于Wix的详细介绍,查看Wix Tutorial. 通过http://wix.codeplex.com/,我们下载最新的Wix toolset,并进行安装. 2 1+1=2 动手实践是感受最深的方式.下面我们就通过制作一个简单的HelloWorld安装包来感受一下Wix.

一招解决MindManager 15安装无法打开注册表问题

  安装MindManager 15中文版思维导图本是一件不困难的事情,但是过程中难免出现安装错误,导致安装失败,其实很多并不是软件问题而是系统出现了漏洞.本文就讲解其中一个的一种错误,1402错误,即无法打开注册表. 问题描述:Error 1402.Could not open key:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerExplorerMAINFeatureControlFEA TURE-BROWS

解决启动电脑时提示注册表出错的问题

  故障问题:每次启动计算机时系统就报告注册表出错然后死机,重新安装ghost xp系统并杀毒后故障现象仍然存在. 故障处理:从故障现象来看,应该是CMOS出现了问题,可在BIOS设置中选择"恢复默认值"选项将BIOS设置恢复到出厂设定即可.如果仍然不能解决系统之家问题,应该对CMOS进行放电处理系统下载. 对CMOS进行放电可通过主板上的路线开关,对照主板说明书,一般短接即可.如果主板上没有预留该跳线开关,可以短接主板电池的正负极进行放电,但放电完毕要等几个小时才可以重新启动计算机,

怎样在部署WinForm项目时修改注册表实现程序安装后开机自动启动?

问题描述 怎样在部署WinForm项目时修改注册表实现程序安装后开机自动启动?请高手们帮忙,多谢了! 解决方案 解决方案二:在注冊表中HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run或HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run增加一個值,設置為你的exe路徑即OK解决方案三:是呀!我也是这么想的.可是,每一个客户安装程序的路径都不一样