WIX 资料参考

来源:互联网 发布:新闻娱乐化 知乎 编辑:程序博客网 时间:2024/06/05 09:37

1)         安装卸载时进行日志记录

Wix制作的Installer的调试很麻烦,没有直接的Bug工具,可以通过记录安装日志的方式进行间接调试。命令为
msiexec /i package.msi /l log.txt

详细参考:
msiexec /Option <Required Parameter> [Optional Parameter]
安装选项
        </package | /i> <Product.msi>
                 安装或配置产品
        /a < Product.msi>
                管理安装 - 在网络上安装产品
        /j<u|m> <Product.msi> [/t <Transform  List>] [/g <Language ID>]
                播发产品 - m 播发到所有用户,u 播发到当前用户
        </uninstall | /x> <Product.msi |  ProductCode>
                卸载产品
显示选项
        /quiet
                安静模式,无用户交互
        /passive
                无从参与模式 - 只显示进程栏
        /q[n|b|r|f]
                设置用户界面级别
                n - 无用户界面
                b - 基本界面
                r - 精简界面
                f - 完整界面(默认值)
        /help
                帮助信息
重新启动选项
         /norestart
                安装完成后不重新启动
        /promptrestart
                提示用户重新启动(如果必要)
        /forcerestart
                安装后总是重新启动计算机
日志选项
        /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
                 i - 状态消息
                w - 非致命警告
                e - 全部错误消息
                a - 操作的启动
                r - 操作特定记录
                u - 用户请求
                c - 初始界面参数
                m - 内存不足或致命退出信息
                o - 磁盘空间不足消息
                p - 终端属性
                v - 详细输出
                x - 额外调试信息
                + - 扩展到现有日志文件
                ! - 每一行刷新到日志
                * - 记录所有信息,除了 v 和 x 选项
        /log < LogFile>
                与 /l* < LogFile> 相同
更新选项
        /update <Update1.msp>[;Update2.msp]
                 应用更新
         /uninstall <PatchCodeGuid>[;Update2.msp] /package < Product.msi | ProductCode>
                删除产品的更新
修复选项
        /f[p|e|c|m|s|o|d|a|u|v] <Product.msi |  ProductCode>
                修复产品
                p - 仅当文件丢失时
                o - 如果文件丢失或安装了更旧的版本(默认值)
                e - 如果文件丢失或安装了相同或更旧的版本
                d - 如果文件丢失或安装了不同版本
                c - 如果文件丢失或较验和与计算的值不匹配
                a - 强制重新安装所有文件
                u - 所有必要的用户特定注册表项(默认值)
                m - 所有必要的计算机特定注册表项(默认值)
                s - 所有现有的快键方式(默认值)
                v - 从源运行并缓存本地数据包
设置公共属性
        [PROPERTY=PropertyValue]

2)         安装默认位置的修改

安装包一般默认安装在系统盘的Program Files文件夹下,此文 件在Wix中为ProgramFilesFolder,使 用形式为:
<Directory  Id="ProgramFilesFolder"></Directory >
    还有很多内置的文件夹描述属 性,比如桌面——DesktopFolder、开始菜单的程序——ProgramMenuFolder,这些都可以直接用。
    有时候安装程序限定要装在某个盘 的根目录中,这时候可以用WindowsVolume来代替系统盘,但是使用方法上有一定的区别:
    <SetDirectory Id="WINDOWSVOLUME"  Value="[WindowsVolume]"/>
    < Directory  Id="WINDOWSVOLUME"></Directory>
    不加上SetDirectory会报错,最好加 上。

    要想使用自己定义的安装目录, 则要对Wix自带 的属性WIXUI_INSTALLDIR进行包装。
    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />

自定义CustomAction(一)

CustomAction在Wix中扮演着很重要的角色,这里讲讲它的其中一个用途——根据条件设置属性的值。
例子:
<Property Id="IDEVC71" Value="not detected"/>
< Property Id="VC71PATH">
      <RegistrySearch Id="VC71" Type="raw"  Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\7.1"  Name="InstallDir"/>
< /Property>
< CustomAction  Id="MyAction.SetVC71Property" Return="check" Property="IDEVC71"  Value="detected">VC71PATH</CustomAction>

用途:一旦在注册表中找到相关 的值,那么属性IDEVC71的值将被设为detected,否则为not detected

3)         如何在安装时设置注册表和环境变量

设置注册表:
<RegistryValue Root="HKCU" Key="Software\Developer"  Name="installed" Type="integer" Value="1" KeyPath="yes"/>
    设置环境变量:(这里将环境变量的设置作为一个Component)
<Component  Id="ProductEnvironment" Guid="" KeyPath="yes">
      <Environment Id='UpdatePath' Name='PATH' Action='set' System='yes' Part='first' Value='[INSTALLLOCATION]bin'/>
      <Environment Id='SetTclLibraryPath' Name='TCL_LIBRARY' Action='set' System='yes'  Part='all' Value='[INSTALLLOCATION]msys\lib'/>
< /Component>
    前者是添加到系统变量PATH中,后者是新建系统环境变量TCL_LIBRARY

4)         自定义CustomAction(二)

调用本机应用程序:
<Property Id="NOTEPAD">Notepad.exe</Property>
< CustomAction Id="LaunchReadme" Property="NOTEPAD"  ExeCommand="[INSTALLLOCATION]README.txt" Return="asyncNoWait"/>
    用途:调用Notepad程序(记事本)打开安装目录下的README.txt文件。

5)         INI文件的操作

Wix提供对标准INI文件的操作,包括新建、编辑等。
例子:
<IniFile Id="WriteIntoFile" Action="addLine" Key="InstallDir" Name="Foobar.ini" Sections="Paths" Value="[INSTALLDIR]"/>
用途:在文件Foobar.ini文件中Paths段下添加一行“InstallDir = 安装目录”。
Action中的操作包括添加、删除、新建等。在实际编写代码时会有自动提示。

6)         Heat的特殊用法

Heat工具用于harvest文件或者文件夹,是比较基础的Wix工具,这里讲讲它的一个特殊用法:配合candle使用var传递参数。
    例如:
      heat.exe  dir  VC80 -gg -nologo -ke -sfrag -template:fragment  -dr INSTALLLOCATION -cg VC80ComponentGroup -var var.VC80Dir -out build\VC80.wxs
    用途:将文件夹VC80下的所有文件和文件夹打包进VC80ComponentGroup里,源文件根目录SourceDir用($var.VC80Dir )代替。
    编译的时候使用candle -dVC80Dir="VC80"即可,这样就可以同时对不同文件夹下的 文件进行一次性处理。-d参数可以有多个,也可以在light的时候调用,尝试成功。

7)         Wix自动化Build流程

heat

candle

light
目前可以考虑使用基本的BAT批处理命令进行自动化的Build过程,以后可以考虑引入Build系统。

8)         关于FilesInUse的使用

Wix中自带了FilesInUse和MsiRMFilesInUse2个错误处理的对话框
一般不需要开发人员去处理,只需要在Install UI Sequence前引用这两个对话框即可
<DialogRef Id = "FilesInUse">
这样卸载或者其他操作时,当前安 装的文件正在被使用时会出现提示框,要求用户选择操作

0 0
原创粉丝点击