在WiX中創建安裝程式以分發升級的應用程式
環境
- Visual Studio
-
- Visual Studio Community 2017
- Visual Studio Community 2019
- WiX Toolset
- 3.11.2
* 它適用於其他版本,但尚未確認
入門
提供有關如何在升級應用程式時創建安裝程式的分步說明。 它基於創建安裝程式的第一個版本的分步文章。 製作方法可能存在差異。
如果要在更新之前保留上一個專案,請以某種方式備份它,例如複製檔。
提前準備
- 您已經創建了安裝程式的第一個版本,並且該專案存在。
關於升級類型
有幾種升級方法可以升級,如以下文章所示。 此處的過程描述了主要升級。 除非有特殊情況,否則此方法沒有問題。
更改產品.wxs
啟動虛擬工作室並打開已創建的專案(解決方案檔)。
開啟產品.wxs 並更改以下參數:
Wix/Product/@Id
如果要進行重大升級,請將此ID替換為新的 GUID。
您無需更改「次要升級」或「小升級」 ,但此處不介紹。
<Wix>
<Product Id="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" />
Wix/Product/@Version
用於確定在安裝過程中是新版本,因此請增加比以前的版本更多的數位。 有四個數位:「主要版本.次要版本.修訂版.內部版本」。 有三個主要版本,次要版本,修訂版,將決定版本是否已升級。
數位越多,數位就越好,但基本上與應用程式的版本一起使用是可以的。
<Wix>
<Product Version="1.8.0.0" />
Wix/Product/@UpgradeCode
此代碼標識同一應用程式的版本升級。 因此,如果要在覆蓋安裝中升級,請不要從首次發佈時的代碼進行更改。
相反,如果要升級但作為單獨的應用程式安裝,請將其替換為新的 GUID。
<Wix>
<Product UpgradeCode="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
Wix/Product/MajorUpgrade/@DowngradeErrorMessage
在已安裝應用程式的新版本中啟動舊安裝程式時要顯示的消息。 它用於舊版本的安裝程式,因此,如果您已經在早期版本中設置了消息,則無需更改它。 如果要更改它,請重寫它。
如果要顯示日語,則必須將語言和摘要代碼屬性設置為日語(日語支援在另一篇文章中介紹)。 產品名稱將替換為產品名稱。
<Wix>
<Product>
<MajorUpgrade DowngradeErrorMessage="すでに新しいバージョンの [ProductName] がインストールされているため、インストールを中断します。" />
放置要安裝的檔
就像第一次創建安裝程序一樣 請重新輸入新程式和相關文件。 刪除不再使用的檔。
更新許可證.rtf
如果要更改要在安裝螢幕上顯示的許可協定,請更改內容。
更新產品.wxs 的安裝文件資訊
* 如果安裝的檔案或資料夾設定與以前的版本沒有變化,則無需處理此專案。
此項目的高級任務是刪除並重新創建以前檔的所有安裝設置。 如果只增加或減少一個檔,則直接擺弄 Product.wxs 代碼可能更快。
啟動"WixEdit"。
打開您的產品.wxs 檔。
從左側圖示中選擇「檔」。 刪除「程式檔案資料夾」 下的資料夾。
右鍵按下「程式檔資料夾」 資料夾「資料夾」 資料夾,然後選擇「匯入資料夾」。
選擇要安裝的檔案所在的資料夾。
一系列檔將添加到樹中。
要與其他參數關聯,請選擇添加的資料夾,並將"ID"重新設置為"INSTALLFOLDER"。
創建「開始」功能表的快捷方式。 因為每次創建此快捷方式的作業都是相同的, 保留 XML 代碼並稍後粘貼可能更快。 (下圖的選擇部分)
從 exe 檔的右鍵按單下選單中選擇「新建」和「短」。
添加 Shortcut 後,選擇它,然後右鍵按下空白以添加屬性。
新增以下參數: (請根據程式重新命名唯一名稱。
屬性 | 值 |
---|---|
Id | LITTLESAVIORTRIAL. EXE_shortcut |
Name | 小劍試用版 |
Directory | ProgramMenuDir |
WorkingDirectory | INSTALLDIR |
Icon | LITTLESAVIOR. ICO |
IconIndex | 0 |
Advertise | yes |
然後選擇「功能」選項卡。
添加任何添加的檔,並刪除任何不再需要的檔。
如果UI中的操作很麻煩,則可以直接編輯 XML。
保存。
生成和運行確認
在視覺工作室中生成並創建安裝程式。
在安裝早期版本時,請運行新版本的安裝程式,以確保安裝它。
此外,請確保在安裝新版本時運行安裝程式的早期版本時無法安裝它。