WiX安装选项--注册程序集到GAC和VS的设计时环境
时间:2022-04-23
本文章向大家介绍WiX安装选项--注册程序集到GAC和VS的设计时环境,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Visual Studio的设计时引用组件的窗口中看到的程序集的位置和程序集的运行时位置是不一样的,特别是在全局程序集缓存(GAC)中的程序集,通过WiX制作Winodws安装程序的时候需要处理这个区别。
VS的设计时的添加引用窗口看到的程序集的位置来自注册表SOFTWAREMicrosoft.NETFrameworkAssemblyFolders – 放在HKEY_LOCAL_MACHINE 下面就是针对所有的用户, 或者放在HKEY_CURRENT_USER 下面针对当前用户。
WiX要把一个程序注册到GAC,只需要在File 上增加一个选项 Assembly=".net" 就可以了,但是注册到GAC的dll不会放到安装目录下方了,这就需要通过提供两个Component方式来处理,例如下面的配置:
<?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>
<Condition Message="你必须有管理员权限才能安装应用程序"><![CDATA[Privileged]]></Condition>
<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" />
<File Id="File_Payload" Source="payload.txt" KeyPath="yes" />
</Component>
<Directory Id="GAC" Name="GAC">
<Component Id="RTGACTest" Guid="22887611-B13E-41EE-897C-D78830E68AEB" DiskId="1">
<!-- Runtime, assembly in GAC -->
<File Id="F_RT_GACTEST" LongName="GACTest.dll" Source="..buildGACTest.dll" KeyPath="yes" Assembly=".net" />
</Component>
</Directory>
<Component Id="DTGACTest" Guid="FB935B7D-D2BD-4B83-A26C-A9376EBA0915" DiskId="1">
<!--Design-time, private assembly-->
<File Id="F_DT_GACTest" LongName="GACTest.dll" Source="..buildGACTest.dll" KeyPath="yes" />
<Registry Id="R_DT_MyControl_AssemblyFolders" Root="HKLM" Key="SOFTWAREMicrosoft.NETFrameworkAssemblyFolders[ProductName]" Value="[$DTGACTest]" Type="string" />
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="Minimal" Level="1">
<ComponentRef Id="Component1" />
<ComponentRef Id="DTGACTest"/>
<ComponentRef Id="RTGACTest" />
</Feature>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
<UIRef Id="WixUI_InstallDir" />
<UI />
</Product>
</Wix>
上面的例子的GACTest.dll注册了两个Component--RTGACTest和DTGACTest,RTGACTest下的File增加了属性Assembly=".net",DTGACTest则没有增加,同时在DTGATest增加了一个注册表项目。
- 矩阵的基本知识构造重复矩阵的方法——repmat(xxx,xxx,xxx)构造器的构造方法单位数组的构造方法指定公差的等差数列指定项数的等差数列指定项数的lg等差数列sub2ind()从矩阵索引==》
- 简单的Writer和ReaderWriter的主要方法Writer工作原理Reader的主要方法readLine():String
- 为啥我的Python这么慢 - 项查找 (二)
- 初识字节流+实现缓冲字节流OutputStream的主要方法构造方法读关流实现BufferedInputStream实现BufferedOutputStream为什么read()返回的是Int型而不是
- Properties+重温Map+本地计数器Map方法Properties的方法用Properties的好处
- SequenceInputStreamSequenceInputStream构造方法读关流刷新
- 怎么实现关闭窗口
- java.io.StreamCorruptedException: invalid type code: AC错误的解决方法
- 不可不知的一点Python陷阱
- 10个应该早点知道的Python技巧
- 一文读懂如何用 Python 实现6种排序算法
- 5 个很好的 Python 面试题
- Python部署手记:django, gunicorn, virtualenv, circus, nginx
- Python图像处理库:Pillow 初级教程
- 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 数组属性和方法
- Linux下rpm、yum和源码三种安装方式详细介绍
- linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境
- 帮助你排序文本文件的 Awk 命令行或脚本(推荐)
- Centos7备份文件时备份文件加入备件日期
- Linux traceroute命令使用详解
- Linux 添加开机启动方法(服务/脚本)
- 概述Linux TTY/PTS的区别
- 在 Linux 命令行发送邮件的 5 种方法(推荐)
- Linux下Jenkins忘记密码的操作步骤
- Linux系统下Tomcat使用80端口的方法
- python 虚拟环境安装与卸载方法及遇到问题
- keras训练浅层卷积网络并保存和加载模型实例
- Python分析最近大火的网剧《隐秘的角落》
- PHP使用PDO操作sqlite数据库应用案例
- 一次因composer错误使用引发的问题与解决