欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-10 22:58:28
上一小节,主要介绍了构建最小级别的安装包,这个安装包所做的事情很简单,主要是打包好一些文件,然后放到用户机器的某个位置下面。 这个小节,主要是说安装过程的各种行为如何使用Wix编写。 CustomAction 1. 使用内建元素 CustomAction 注意到我们之前给用户安装过一个文件 Foob ......

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

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

 

customaction

1. 使用内建元素 customaction

注意到我们之前给用户安装过一个文件 foobarappl10.exe,这个文件在wix通过file元素指明,注意它的id是foobarexe

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

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

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

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

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

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

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

 

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

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

1. 用vs创建工程

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

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

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

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

更多的session信息参考微软文档,

3. 编译完成后得到产物 mycsutomaction.ca.dll

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

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

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

 

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

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

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

 

6. 使用的地方

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

 

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

;正常安装
msiexec /i  setupproject1.msi

;安装后写日志,myinstaller.log
msiexec /i  setupproject1.msi  /l*v  myinstaller.log

 

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

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

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

 

 

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

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

 

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

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

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

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

 

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

注意session中可以拿到之前定义的几个property,name age address

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

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