WiX安装选项--环境变量
时间:2022-04-23
本文章向大家介绍WiX安装选项--环境变量,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
系统环境变量由 Windows 定义并应用到所有计算机用户。对系统环境的更改将写入注册表,而且通常需要重启计算机才能生效。通常我们的程序中也会使用环境变量,如何在WiX设置环境变量呢?
安装一个环境变量,我们就需要向Environment table中添加一条记录,其中有几个字段是必须设置的:
- Environment - public key to be referenced from other tables.
- Name - name of the environment variable we want to create.
- Value - value of new environment variable, which is formatted field.
同时在InstallExecuteSequence table 中需要添加 WriteEnvironmentStrings 或者RemoveEnvironmentStrings 操作。
在安装/删除程序的时候需要处理我们的环境变量:
- 安装程序:
- 如果相同名称的环境变量名称不存在,则创建一个变量:
- 如果已经存在一个相同名称的变量:
- 用新的值代替旧值.
- 不修改旧值或者忽略新值
- 在环境变量的值列表开头插入一个新的值.
- 在环境变量的值列表末尾插入一个新的值.
- 如果已经存在一个相同名称的变量:
- 删除一个环境变量:
- 不管它的值
- 只有当它的值和提供的值匹配时.
- 环境变量的类型:
- 用户环境变量(used in per-user installation).
- 系统环境变量(used in per-machine installation).
- 如果相同名称的环境变量名称不存在,则创建一个变量:
- 卸载程序:
- 不删除环境变量.
- 删除环境变量.
下面我们来看一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="a960cf35-0779-43e8-923b-35638f2bfc42" Name="Minimal" Language="2052" Version="1.0.0.0" Manufacturer="Geffzhang"
UpgradeCode="0bf7e020-5bbd-4a06-8e39-e715999edbf5">
<Package InstallerVersion="200" Compressed="yes" Description="Minimal Windows Installer Sample"
Comments="This installer database contains the logic and data required to install Minimal Windows Installer Sample."/>
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<Property Id="EnableEV" Value="1"></Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLLOCATION" Name="Minimal">
<Component Id="Component1"
Guid="{1781A625-8ACB-45E7-A8BA-219D81760B2E}">
<CreateFolder />
<Environment Id="TestMinVar"
Action="set"
Part="all"
Name="MinEnvVar"
Permanent="no"
System="yes"
Value="8" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="Minimal" Level="1">
<ComponentRef Id="Component1" />
</Feature>
<InstallExecuteSequence>
<WriteEnvironmentStrings>EnableEV=1</WriteEnvironmentStrings>
</InstallExecuteSequence>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
<UIRef Id="WixUI_InstallDir" />
</Product>
</Wix>
这个例子创建了一个系统环境变量 TestMinVar 值是 "8"。编译并安装例子程序,在系统环境变量就可以看到TestMinVar这个环境变量了,卸载这个例子程序,环境变量TestMinVar也会被删除。
Environment table 也是一个 formatted field,这也就是说环境变量的值可以是来自一个属性,另一个环境变量,或者是任何一个formatted 字符串,下面的例子就是把环境变量设置成INSTALLLOCATION:
<Environment Id="TestMinVar"
Action="set"
Part="all"
Name="MinEnvVar"
Permanent="no"
System="no"
Value="[INSTALLLOCATION]" />
下面这个例子是用新的值代替已经存在的值:
<Environment Id="TestMinVar"
Action="set"
Part="all"
Name="MinEnvVar"
Permanent="yes"
System="no"
Value="123" />
主要就是Permanent ="yes",下面的例子把Permanent="no", Part="last"表示把值附加到后面:
<Environment Id="TestMinVar"
Action="set"
Part="last"
Name="MinEnvVar"
Permanent="no"
System="no"
Value="456" />
- HDUOJ---2112HDU Today
- HDUOJ-----2066一个人的旅行
- HDUOJ --2544最短路(基础)
- 帮同学的忙,随意写了个课程设计(关于循环双向列表)
- HDUOJ---3371Connect the Cities
- 初学HTML一些基本控件语句
- java学习之第五章编程题示例(初学篇)
- java第四章编程题(初学篇)
- java测试Unicode编码以及数组的运用(初学篇)
- HDUOJ---1754 Minimum Inversion Number (单点更新之求逆序数)
- HDUOJ-------1753大明A+B(大数之小数加法)
- HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)
- HDUOJ----1166敌兵布阵(线段树单点更新)
- poj----2155 Matrix(二维树状数组第二类)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在群晖docker上装elmlang可视调试编码器ellie
- Elasticsearch:inverted index,doc_values及source
- 在群晖docker上构建私有云IDE和devops构建链
- 小白学PyTorch | 14 tensorboardX可视化教程
- Apache Solr 漏洞复现
- Elasticsearch rollover API
- 重发和重定向有什么区别与重定向应用
- 为tinycolinux制作应用包
- CrossC2的2.0版本
- 使用OpenCV和Python计算图像的“色彩”
- 为tinycolinux创建应用包-toolchain和编译方法
- [译]在Solidity中如何优化Gas第一部分:变量
- [译]Solidity 0.7.0 新变化
- 两个数组的交集 II
- 常说的手机刷新率60Hz、120Hz有什么不同?