主要是用來打包程式輸出成 .msi
檔(Windows Installer)。
建議先看完 「30 天 | C# WixToolset + WPF 帥到不行的安裝包 系列」,能夠把 80% 以上的問題解決。
輸出 Wix 文件方法
先到 WiX Toolset Release 安裝需要的工具。
需要開啟 CMD 且必須要用工作管理員權限
打開,之後 cd 到 WiX Toolset 的安裝資料夾。
C:\Program Files (x86)\WiX Toolset v3.11\bin
heat.exe
可以掃描目錄中的所有文件和子目錄,並生成 WiX 文件中所需的 Component、Directory、File 和其他元素的定義。
使用下面的參數可以拿到 myKeyIn.wxs
。需要把 [MyDemo] 替換成正確的路徑,可以參考我的 Product.wxs
。
heat.exe dir "[PUT_YOUR_PATH]" -dr INSTALLFOLDER -cg ProductComponents -gg -gl -sf -srd -var "[MyDemo]" -out "[PUT_YOUR_OUTPUT_PATH]\myKeyIn.wxs"
參數名稱 | 解釋 |
---|---|
[PUT_YOUR_PATH] | 需要打包的路徑資料夾 |
[MyDemo] | WiX 文件中要使用的變數 |
[PUT_YOUR_OUTPUT_PATH] | WiX 文件的路徑 |
Wix Product.wxs
桌面捷徑
需要注意一些細項設定,如 Guid、執行檔名稱、路徑等。
<Directory Id="DesktopFolder" Name="Desktop" >
<Component Id="DesktopFolderShortcut" Guid="{94D38478-869E-4CA8-BEA6-7905A7135DB8}">
<Shortcut Id="DesktopShortcut" Directory="DesktopFolder" Name="Wix-Hello Unity" Target="[INSTALLFOLDER]Wix-Hello Unity.exe" WorkingDirectory="INSTALLFOLDER" Icon="WixToolsetIcon">
</Shortcut>
<RegistryValue Root="HKCU" Key="Software\WenRongStudio\Wix-Hello Unity" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</Directory>
資料夾權限
避免安裝在系統槽時,無法變動檔案,所以必須把資料夾權限打開。
需要注意一些細項設定,如 Guid 等。
<Component Id="InstallationDirectory" Guid='{0D92D4B6-CACE-4556-8CBD-C8C385B22D28}' >
<CreateFolder Directory="INSTALLFOLDER">
<Permission User="SYSTEM" GenericAll="yes"/>
<Permission User="EveryOne" GenericAll="yes" GenericRead="yes" Read="yes" ReadAttributes="yes" GenericExecute="yes" TakeOwnership ="yes" GenericWrite ="yes" WriteAttributes="yes" ReadPermission ="yes" ChangePermission="yes" />
<Permission User="Users" Domain="[LOCAL_MACHINE_NAME]" GenericAll="yes" GenericRead="yes" Read="yes" ReadAttributes="yes" GenericExecute="yes" TakeOwnership ="yes" GenericWrite ="yes" WriteAttributes="yes" ReadPermission ="yes" ChangePermission="yes"/>
</CreateFolder>
</Component>
建立 Windows Menu 資料
可以 Windows Menu 啟動檔案跟卸載執行檔。
需要注意一些細項設定,如 Guid、執行檔名稱、路徑等。
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="Wix-Hello Unity">
<Component Id="ApplicationShortcut" Guid="{9724BE7E-7132-4978-B806-4B0D1B3DE350}">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="Wix-Hello Unity"
Description="Wix-Hello Unity"
Target="[INSTALLFOLDER]\Wix-Hello Unity.exe"
WorkingDirectory="APPLICATIONROOTDIRECTORY"
Icon="WixToolsetIcon"/>
<Shortcut Id="UninstallProduct"
Name="Uninstall"
Description="Uninstalls Wix-Hello Unity"
Target="[System64Folder]msiexec.exe"
Arguments="/x [ProductCode]" />
<RemoveFolder Id="ProgramMenuSubfolder" On="uninstall"/>
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\WenRongStudio\Wix-Hello Unity" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</Directory>
</Directory>
GitHub
參考文章
30 天 | C# WixToolset + WPF 帥到不行的安裝包 系列
Create a Shortcut on the Start Menu
Removing files when uninstalling WiX