Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WiX安装选项--环境变量

WiX安装选项--环境变量

作者头像
张善友
发布于 2018-01-19 07:50:16
发布于 2018-01-19 07:50:16
1.5K00
代码可运行
举报
文章被收录于专栏:张善友的专栏张善友的专栏
运行总次数:0
代码可运行

系统环境变量由 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).
  • 卸载程序:
    • 不删除环境变量.
    • 删除环境变量.

下面我们来看一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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:

代码语言:js
AI代码解释
复制
              <Environment Id="TestMinVar"
                         Action="set" 
                         Part="all"
                         Name="MinEnvVar"
                         Permanent="no"
                         System="no"
                         Value="[INSTALLLOCATION]" />

下面这个例子是用新的值代替已经存在的值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
             <Environment Id="TestMinVar"
                         Action="set" 
                         Part="all"
                         Name="MinEnvVar"
                         Permanent="yes" 
                         System="no"
                         Value="123" />

主要就是Permanent ="yes",下面的例子把Permanent="no", Part="last"表示把值附加到后面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
               <Environment Id="TestMinVar"
                         Action="set" 
                         Part="last" 
                         Name="MinEnvVar"
                         Permanent="no" 
                         System="no"
                         Value="456" />
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-12-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go解析环境变量
在实际开发中,我们常常需要根据不同环境(开发、测试、生产)来配置数据库地址、端口号、API 密钥等信息。环境变量(Environment Variables)是最常见、最安全的一种配置方式。
孟斯特
2025/05/15
1200
Go解析环境变量
WiX安装选项---开始菜单项
参考文档: How To: Create a Shortcut on the Start Menu,How To: Create an Uninstall Shortcut 制作的安装程序安装后,都要
张善友
2018/01/19
1.3K0
使用WiX制作简单MSI安装程序
WiX完全用xml描述,使用命令行来生成。只要用任何一个文本编辑器就可以了。但是为了开发效率,我们还是借助于辅助工具比较好。是一般使用的工具是两个:一个Visual Studio插件,在WiX的安装包里面附带,另一个就是WiXEdit,WixEdit是编辑的XMLXML的源代码的图形化工具箱.WixEdit会让你创造体制条件与MSI和MSM测试wix工具箱.它提供了直观的、轻松的对话方式编辑wix文件来源。 下载和安装 1、下载Wix 3.0版本,目前还是beta。但是已经足够稳定了,可以应用于生产环境。
张善友
2018/01/19
3.8K0
使用WiX制作简单MSI安装程序
用Wix制作VSPackage的安装包
做完VSPackage后,如何打包发布它?其实有很多种打包的方式,在这里我只介绍在VS2008下用Wix制作VSPackage的安装程序。您首先要下载并安装Wix toolset(http://wix.codeplex.com/)。
明年我18
2019/09/18
2.6K0
用Wix制作VSPackage的安装包
WiX安装选项--注册程序集到GAC和VS的设计时环境
Visual Studio的设计时引用组件的窗口中看到的程序集的位置和程序集的运行时位置是不一样的,特别是在全局程序集缓存(GAC)中的程序集,通过WiX制作Winodws安装程序的时候需要处理这个区别。 VS的设计时的添加引用窗口看到的程序集的位置来自注册表SOFTWARE\Microsoft\.NETFramework\AssemblyFolders – 放在HKEY_LOCAL_MACHINE 下面就是针对所有的用户, 或者放在HKEY_CURRENT_USER 下面针对当前用户。 WiX要把一个程序
张善友
2018/01/19
7460
用 WiX 制作安装包:创建一个简单的 msi 安装包
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。
walterlv
2023/10/22
2.4K0
用 WiX 制作安装包:创建一个简单的 msi 安装包
WMI技术介绍和应用——查询环境变量
        本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。
方亮
2019/01/16
6590
Wix 安装部署(五) Bootstrapper 捆绑安装
Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Windows Installer中通过配置能很快的弄出来。可惜有很多加了锁的功能在InstallShield Limited Edition 版本中是用不了的。 但基本满足安装需求了。按照这个目录(下图)一个一个去配,配出来的也像样了(这里就不说了)。但是无法定制行为,以及打补丁等。wix又是一个极端,完全依赖xml。这两天想解决自动检测.net framework版本没有就自动安装的功能和注册dll的就很费劲。 在Windows Installer中分别在Redistributables和Registry中设置就行了,特别是注册,可以直接把目录从你自己的电脑上拖过来。但今天要讲的,就是wix中的Bootstrapper 项目,制作一个捆绑安装程序,也是Windows Installer中没有的。将多个需要安装的文件,按照顺序一次性装完。
全栈程序员站长
2022/09/09
1.3K0
Wix 安装部署(五) Bootstrapper 捆绑安装
10.8 Git 内部原理 - 环境变量
Git 总是在一个 bash shell 中运行,并借助一些 shell 环境变量来决定它的运行方式。 有时候,知道它们是什么以及它们如何让 Git 按照你想要的方式去运行会很有用。 这里不会列出所有的 Git 环境变量,但我们会涉及最有的那部分。
shaonbean
2019/05/26
1.1K0
做一个自动配置JDK环境变量的Powershell脚本
乐百川
2018/01/09
2K0
使用 Cobbler 批量自动化部署 CentOS / Ubuntu
本文主要讲解通过 CentOS 7.6 Minimal + Cobbler 自动化安装 CentOS / Ubuntu 。
iMike
2019/07/30
3.4K0
JAVA_HOME环境变量失效的解决办法
晚上把oracle自带的weblogic给卸载了,然后打开eclipse,发现报错了: Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg' JAVA_HOME的环境变量值根本不是这个目录,到CMD命令窗口下,用echo %JAVA_HOME%,也显示正常,但是java -version时,显示java的home目录仍然是C:\Java\jre7,"百撕不得妻姐"之后,去问了度娘,原来JDK如果执行过安装程序后,会在 HKEY_LOCAL_MACHI
菩提树下的杨过
2018/01/24
1K0
JAVA_HOME环境变量失效的解决办法
使用WiX制作具有时间限制的安装包
WiX是Windows Installer XML的简称,它是用于制作Windows安装包的工具集。它支持命令行环境,开发者可以及将它集成到他们的编译过程中创建MSI和MSM安装包。 更多信息可以参考
葡萄城控件
2018/01/10
1.6K0
使用WiX制作具有时间限制的安装包
用 WiX 制作安装包:设置的 .NET Framework 前置会始终安装,即使目标电脑已经自带或装好
使用 WiX 的 Burn 引擎制作自定义托管引导程序的 exe 安装包时,你可能会遇到这种情况:明明目标电脑上已经装好了 .NET Framework,但无论如何就是会提示安装,始终不启动自定义的安装界面。
walterlv
2023/10/23
5450
用 WiX 制作安装包:设置的 .NET Framework 前置会始终安装,即使目标电脑已经自带或装好
数据库静默安装总结(r3笔记第58天)
在学习数据库的时候,不知道dbca的命令用了多少遍,但是越是安装也是觉得自己会的越少,因为图形界面的清晰直白反而不知道哪些准备工作是需要特别准备的,如果在远程支持的环境中,图形界面就会受到网络带宽的影响,如果在本地的环境中学习的时候,总是提示少这个包,那个包的。其实有很多的安装包如果不使用图形界面都不是必须的。个人感触比较深的一个例子就是安装的时候缺少报了libXp.so相关的错误,结果自己折腾了半天,从网上下载安装包费了很大的周折才算搞定,最后发现使用静默安装就不需要这个包了,基于学习的环境,摆脱图形界面
jeanron100
2018/03/14
1.1K0
Ubuntu系统环境变量详解
<p align="left">使用Ubuntu 进行开发绕不开的就是环境变量的配置,由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,如果不了解其调用顺序,很有可能遇到配置了环境变量,而没有其作用的问题。本文将介绍Ubuntu Linux系统的环境变量。
用户8705048
2021/06/08
2K0
python的下载安装以及环境变量的配置
Downloads 》》Windows 跳转页面:https://www.python.org/downloads/windows/
DoubleHelix
2023/09/18
8440
python的下载安装以及环境变量的配置
用 WiX 制作安装包:为 WiX 制作的 msi 安装包添加 .NET Framework 环境检查
本文是 WiX Toolset 安装包制作入门教程 系列中的一篇,可前往阅读完整教程。
walterlv
2023/10/22
1.5K0
用 WiX 制作安装包:为 WiX 制作的 msi 安装包添加 .NET Framework 环境检查
linux配置环境变量jdk_java配置环境变量详解
在配置 Linux 系统服务器的时候,我们常常需要设置系统环境变量,这篇文章就是总结几种常见的配置环境变量的方式。
全栈程序员站长
2022/11/03
2.5K0
Java环境变量PATH和CLASSPATH
Java开发中常用到环境变量的配置,下面简单介绍下Java中经常配置的环境变量:PATH和CLASSPATH。
全栈程序员站长
2022/06/24
5.2K0
Java环境变量PATH和CLASSPATH
推荐阅读
相关推荐
Go解析环境变量
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验