Wix 快速開發安裝包程式 (二)安裝行為

2021-10-05 09:16:19 字數 3162 閱讀 6218

上一小節,主要介紹了構建最小級別的安裝包,這個安裝包所做的事情很簡單,主要是打包好一些檔案,然後放到使用者機器的某個位置下面。

這個小節,主要是總結安裝過程的各種行為如何使用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='software\myinstallerreg\foobar 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

那麼我想在安裝完成之後,執行這個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資訊參考微軟文件,

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

用WIX製作安裝包

1 需要打包的檔案,目錄層級很多,檔案數量也很多 甚至有幾萬個 沒法手工寫wxs安裝檔案 解決辦法是呼叫heat命令列,自動生成wxs檔案。heat.exe dir help cg oemhelpfilescomponents dr oemhelpfilesfolder sreg srd varva...

利用WIX製作安裝包 2

利用wix製作安裝包 2 原文 利用wix製作安裝包 2 在wixui featuretree dialog set中一共包含了如下幾種dialog。first time install dialog sequence wixui welcomedlg wixui licenseagreementd...

使用Wix簡單製作了個安裝包

之前看了好幾個打包軟體 advanceinstaller installshield什麼的,發現大都是收費的,看的wix還是sourceforget上停更的版本,以為沒戲,沒想到在github偶爾看到了wixtoolset,原來還有更新,還有vs2019的外掛程式,趕緊下了乙個用用.終於把我的dot...