上一小節,主要介紹了構建最小級別的安裝包,這個安裝包所做的事情很簡單,主要是打包好一些檔案,然後放到使用者機器的某個位置下面。
這個小節,主要是總結安裝過程的各種行為如何使用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. 內建行為
用例一:安裝完成之後,要求使用者重啟機器
<用例二:使用內建元素 customactioninstallexecutesequence
>
<
schedulereboot
after
='installfinalize'
>version9x
schedulereboot
>
installexecutesequence
>
那麼我想在安裝完成之後,執行這個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. 使用的地方
使用命令安裝做出來的安裝包,並指明生成日誌檔案到當前目錄
;正常安裝觀察日誌檔案,發現customaction 已經被執行了msiexec /i setupproject1.msi
;安裝後寫日誌,myinstaller.log
msiexec /i setupproject1.msi /l*v myinstaller.log
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...