• Wix 快速开发安装包程序 (二)安装行为


    上一小节,主要介绍了构建最小级别的安装包,这个安装包所做的事情很简单,主要是打包好一些文件,然后放到用户机器的某个位置下面。

    这个小节,主要是总结安装过程的各种行为如何使用Wix编写。

    一、写注册表

    安装过程经常会给注册表写东西,这个方法是通过 RegistryKey 元素实现的,通常用 Root 和 Key 来确定写注册表的位置,然后子元素

    RegistryValue 来在这个位置下面写一条一条的项目,Name 和 Value 来确定这一项。

        <DirectoryRef Id="TARGETDIR">
          <Component Id="RegistryEntries" Guid="3609F43C-C313-4B87-AD47-28B34FB4FE3A">
            <RegistryKey Id='FoobarRegInstallDir' Root='HKCU' Key='SoftwareMyInstallerRegFoobar 1.0' Action='createAndRemoveOnUninstall'>
              <RegistryValue Type='string' Name='TestInstallDir' Value='[INSTALLDIR]'/>
              <RegistryValue Type='integer' Name='TestNumber' Value='123'/>
            </RegistryKey>
          </Component>
        </DirectoryRef>

    安装完成后,搜索注册表,应该能看到上面的两条

    二、 Action

    1.  内置行为

    用例一:安装完成之后,要求用户重启机器

    <InstallExecuteSequence>
        <ScheduleReboot After='InstallFinalize'>Version9X</ScheduleReboot>
    </InstallExecuteSequence>

    用例二:使用内建元素 CustomAction

    注意到我们之前给用户安装过一个文件 FoobarAppl10.exe,这个文件在wix通过File元素指明,注意它的Id是FoobarEXE

    那么我想在安装完成之后,运行这个exe,就可以这样写:

    如上,通过FileKey 找到要执行的文件。

    还有一个例子,用NotePad打开安装后的一个文件 Readme.txt,通过Property找到Notepad.exe, 然后再传参数Readme.txt,这样就可以打开了。

    实际效果,安装完成之后:

    2. 通过 CustomAction 注入c#代码,并在安装应用程序时执行

    上面介绍的方法毕竟使用起来比较受限,wix允许我们写c# code 并在安装时执行

    1. 用VS创建工程

    2. VS帮我们添加了一个cs文件,注意wix能执行的方法都要加Attribute CustomAction

    参数 session 相当于上下文环境,先测一个最简单的方法,session.Log 方法,这个是在安装包按安装过程中,向日志文件写东西的接口。

    更多的session信息参考微软文档,https://docs.microsoft.com/en-us/windows/win32/msi/session-object

    3. 编译完成后得到产物 MyCsutomAction.CA.dll

    4. 添加到我们的安装包工程里

    5. 添加一个文件,专门定义刚才的CustomAction, 注意BinaryKey是为了找到那个dll,DllEntry 是你要调用的方法名

    6. 使用的地方

    使用命令安装做出来的安装包,并指明生成日志文件到当前目录

    ;正常安装
    msiexec /i  SetupProject1.msi
    
    ;安装后写日志,MyInstaller.log
    msiexec /i  SetupProject1.msi  /l*v  MyInstaller.log

    观察日志文件,发现CustomAction 已经被执行了

    3. 调试安装包和 CsutomAction 注入的代码

    实际开发中注入的c# 不可能没有bug,除非它真的太简单,所以必须得会调试

    1. 为了测试,加点Property在文件里

    2. 在c# custom action这边,写一句代码,把VS启动起来

    3. 实际安装中,会弹出用VS打开源代码工程,选好了就能调试代码。

    注意session中可以拿到之前定义的几个Property,Name Age Address

  • 相关阅读:
    元组转换列表
    python切片
    序列类型的方法 增删改查
    python基础 四则运算和数据类型
    linux 常用基础命令操作
    MySQL 命令操作
    linux中如何修改root密码、设置固定IP、安装vmware tools
    虚拟机中网络桥接模式设置
    PHP基础
    HTML基本标签介绍
  • 原文地址:https://www.cnblogs.com/chenyingzuo/p/12173474.html
Copyright © 2020-2023  润新知