使用 Inno Setup 建立自訂安裝程式的實用指南

最後更新: 09/09/2025
作者: 艾薩克
  • Inno Setup 允許強大的安裝程序 Windows 透過完全控制 腳本 和 x64 支援。
  • 使用 CodeDependencies 和 netcorecheck 驗證 .​​NET 6 可確保可靠執行。
  • 良好的配置:獨特的 GUID、LZMA 壓縮、管理員權限和多語言。
  • 自動化服務(建立、啟動、停止、刪除)並在發布之前在虛擬機器上進行驗證。

帶有 Inno Setup 的 Windows 安裝程序

在 Windows 上建立自己的安裝程式並非大型團隊的專利:使用合適的工具,您可以在幾分鐘內打包應用程式並提供流暢的安裝體驗。本文將詳細講解如何利用它。 Inno Setup 建置自訂安裝程序,考慮需求、64 位元架構、發布 .NET 專案和依賴性檢查。

下文將提供完整實用的指南,涵蓋從專案準備到安裝程式編譯和測試的所有內容。我還整合了 避免典型錯誤的關鍵提示 (例如重複的 GUID 或忘記包含所有已發佈的檔案),如果您的應用程式需要,我將向您展示如何自動安裝 Windows 服務。

什麼是 Inno Setup

什麼是 Inno Setup 以及它是如何運作的?

Inno Setup 是一款非常古老且穩定的 Windows 免費安裝程式建立器,它結合了圖形精靈和 定義安裝程式行為的中央腳本 (參數、任務、檢查等)。透過此腳本,您可以控制從安裝位置到桌面或「開始」功能表上的捷徑的所有內容,甚至包括安裝 額外的來源或資源還有一些補充解決方案,例如 Ninite 用於自動化軟體部署。

在相容性方面,它涵蓋了非常廣泛的系統:Windows 10、8、7、Vista、Server 2003、XP(​​包括 x64 版本)、2000、NT 4.0 和 9x。此外,它還支援 安裝 64 位元應用程式並建立特定的安裝程序 對於該架構,如果您正在尋找效能和與當前平台的一致性,那麼它尤其重要。

先決條件

使用 Inno Setup 建立安裝程式的要求

在開始之前,請確保您已準備好以下元素。每個元素都有特定的用途,可以節省您測試和修改的時間,因此 冷靜地回顧它們:

  • Inno Setup(最新穩定版本)安裝或更新(如果已安裝)。保持更新對於某些腳本和擴充功能的順利運行至關重要。
  • Inno Setup 依賴項安裝程序:從其程式碼庫下載程式碼(選擇“下載來源”選項)並解壓縮。我們需要兩個文件:CodeDependencies.iss 文件和 netcorecheck_x64.exe 可執行文件,它們將幫助我們完成 檢查/安裝 .NET.
  • .NET 6 項目您可以使用自己的或建立一個範例;重要的是正確發布它,以便將二進位檔案打包到安裝程式中。
  • 用於測試的虛擬機器(建議):這不是強制性的,但強烈建議在迭代安裝程式時避免對主電腦產生不必要的影響。

在你的專案中強制使用 64 位元架構

如今,幾乎所有電腦都運行在 64 位元系統中,因此使用 x64 編譯應用程式通常會提升效能和相容性。在 Visual Studio 2022 中,您可以輕鬆強制使用架構,讓您的應用程式隨時準備 64 位元安裝程序.

在 Visual Studio 頂部欄中,在設定選擇器(偵錯/發布)旁邊,按一下平台下拉式功能表(通常是任何 CPU)並輸入 配置管理器從那裡,透過選擇 x64 來建立新平台,從任何 CPU 複製配置,並選取該方塊以在解決方案專案中產生平台。

  已請求此功能。修復此惡意軟體錯誤的 5 種方法

關閉對話方塊後,當您選擇 x64 平台時,您將在 xXNUMX 上進行編譯。此變更在建置安裝程式時特別有用,因為 Inno Setup 允許您指定在 xXNUMX 上進行安裝 64位元模式,與您的二進位一致。

發布專案

要打包應用程序,最好將其發佈到具有正確配置文件的資料夾中。這樣可以確保安裝程式準確複製必要的文件,並且不會拖累開發資源。目標是準備好一個包含二進位檔案的目錄,以便 Inno Setup 將複製到 {app}.

在 Visual Studio 2022 中,右鍵點擊您的專案並選擇「發布」。選擇“資料夾”作為目標資料夾。在配置畫面上,開啟“顯示所有配置”,並將設定檔設定為 版本 | x64如果願意,您可以調整發布路徑;否則,將使用預設發布設定檔位置。

最後,點選「發布」。 Visual Studio 將編譯可執行檔和相依性並將其放置在指定的目錄中。稍後您將在腳本中使用該路徑,因此 把它放在手邊,因為你將用宏來引用它 指向所有文件。

在 Inno Setup 中準備腳本

開啟 Inno Setup 並建立一個空腳本。將其與依賴套件中的兩個關鍵檔案一起儲存到工作資料夾中: CodeDependencies.iss 和 netcorecheck_x64.exe這樣,您將在同一個目錄中擁有三個初始元素:.iss 腳本、相依性庫和 .NET 檢查器。如果您願意,可以參考有關如何創建 帶有 .bat 腳本的迷你安裝程序 了解腳本的基本結構。

腳本的結構圍繞著幾個部分和指令展開,這些部分和指令控制著腳本的配置方式、複製哪些檔案、建立哪些捷徑以及在安裝之前、安裝期間和安裝之後執行哪些操作。下面您將看到對於具有驗證功能的現代 64 位元安裝程式必須定義的要點。 目標電腦上的 .NET 6.

設定部分:身份、壓縮和 64 位

在安裝程式中,您可以定義產品識別、預設路徑和安裝程式參數。必須分配 唯一 AppId (GUID)要取得它,您可以使用 Inno Setup 自帶的選項:工具 → 產生 GUID。如果您在不同的安裝程式中重複使用同一個 GUID,系統可能會混淆它們,並將一個安裝視為另一個安裝的更新。

通常使用一組巨集來映射主要資訊:例如, #define MyAppName, #define MyAppVersion, #define MyAppPublisher, #define MyAppURL, #define MyAppExeName,或者如果你的應用程式需要的話,甚至可以使用服務名稱的巨集(例如 #define MyService)。您還將透過巨集定義發布資料夾和目標安裝資料夾,例如 #define PublishFolder y #define InstallationDir.

利用這些信息,您可以映射安裝程式欄位: AppName, AppVersion, AppPublisher, AppPublisherURL, AppSupportURL, AppUpdatesURL, DefaultDirName (通常會結合 InstallationDir + MyAppName), DefaultGroupName y OutputBaseFilename (安裝程式可執行檔將以其的名稱產生)。對於打包,通常會激活 壓縮 lzma 和 SolidCompression 是,帶 WizardStyle 現代,管理員權限 PrivilegesRequired=admin 並且,如果適用的話, ArchitecturesInstallIn64BitMode=x64 以 64 位元安裝。

程式碼部分:.NET 6 測試

使用依賴函式庫,您可以在初始化期間新增一個調用,用於檢查 .NET 6 桌面是否存在。如果不存在,安裝程式將提供 自動安裝. 在初始化函數中(InitializeSetup)只需呼叫庫提供的過程,例如 Dependency_AddDotNet60Desktop,並返回 True 繼續。

  修改《模擬市民4》的語言[簡單的解決方案]

請記住,要使其正常工作,該文件必須與腳本位於同一資料夾中。 CodeDependencies.iss 和可執行檔 netcorecheck_x64.exe。第一個包含在您的腳本中,第二個與您的應用程式一起分發到安裝資料夾中,以執行 運行時檢查.

語言部分:多語言安裝程序

Inno Setup 可讓您為精靈介面新增多種語言。您可以根據需要啟動它們;例如: 英語、加泰隆尼亞語、法語、葡萄牙語和西班牙語每種語言都引用其訊息文件,例如 compiler:Default.isl 或風格的路線 compiler:Languages\Spanish.isl如果您不需要所有這些,請將那些您不會使用的註解掉。

在安裝程式中設定多種語言可以改善體驗,但不要忘記檢查您的自訂文字(例如應用程式名稱或支援URL)是否適用於特定語言。 國際公眾或明顯在地化,取決於你的情況。

文件部分:複製什麼以及排除什麼

在這裡,您可以指明文件的來源(您的發布資料夾)和目標(通常 {app})。一個關鍵細節:在發布巨集中,將星號保留在路徑末尾(例如,以 \發布\*) 讓安裝程式複製目錄及其子目錄中的所有檔案。如果沒有該通配符,則 忘記必要的文件 在包裝中。

如果您不想分發某些配置或臨時文件,通常可以新增排除規則。例如,您可以排除 conf.xml 該配置是否應該在運行時產生或透過其他方式分發。利用 常用旗幟ignoreversion, recursesubdirs y createallsubdirs 控製文件的複製方式。同時考慮如何處理傳統的安裝文件,例如 .inf 文件 如果您的安裝需要它們。

不要忘記在本節中包含可執行檔。 netcorecheck_x64.exe 這樣它就位於應用程式資料夾中。這與你在程式碼部分設定的依賴項檢查密切相關,並確保 堅固的安裝.

圖示部分:快捷方式

如果你想 創建快捷方式 在程式組中,定義一個指向主可執行檔的條目。例如,基於 {#MyAppName} 並且他扔了 {app}\{#MyAppExeName}。您可以根據需要建立更多快捷方式(桌面、主頁等),但請記住 越少越好 建議不要給用戶太多選項,以免負擔過重。

運行和卸載運行部分:服務和任務

如果您的應用程式以 Windows 服務的形式執行,則可以從安裝程式本身管理其生命週期。其思路是停止並刪除先前存在的服務(如果存在),並建立指向 {app}\{#MyAppExeName} 使用自動啟動,並在複製文件後最終啟動它。所有這些都是透過 腳本 在隱藏模式下調用,並傳遞適當的參數(stop、delete、使用 binPath 建立和 start)。如果您需要運行 命令 從安裝程式中查看如何 從安裝程式開啟 CMD 管理流程和服務。

對於卸載,您可以定義關閉進程以及停止和刪除服務的操作。命令 taskkill 如果可執行檔仍在運行,則協助關閉它,然後 sc.exe stop y sc.exe delete。這樣,您可以確保刪除乾淨,並且在刪除結束時不會留下任何活動服務的痕跡 卸載程序.

  在 Windows 上使用 shutdown /r /o 以及有用的替代方案(在 Linux 上)

劇本重點及常見錯誤

在貼文巨集中保留最後一個通配符。典型的錯誤是忘記 PublishFolder 末尾的星號,這會導致未複製所有必要的文件。另外,請檢查排除項,以免意外複製所需的文件。

始終為 AppId如果您在不同的應用程式之間共用相同的 ID,Inno Setup 可能會將其解釋為更新,而不是獨立安裝。這是導致 卸載過程中出現異常行為 或在控制台條目中。

在適當的位置標記 64 位元安裝。使用 ArchitecturesInstallIn64BitMode=x64 確保安裝程式與 x64 二進位檔案對齊,避免不必要的系統重定向。同時 所需權限=管理員 如果您需要寫入受保護的位置、註冊服務或安裝系統資源。

檢查包含的語言。如果安裝程式針對特定受眾,請僅使用必要的語言。僅保留必要的語言可以簡化軟體包,降低不一致的風險,並提高 用戶體驗.

編譯安裝程式

一切準備就緒後,就可以開始編譯了。在 Inno Setup 中,依序選擇「Build → Compile」。如果沒有錯誤,安裝程式將以您在 OutputBaseFilename要立即找到它,請使用“建置”→“選項”。 打開輸出文件夾 並檢查文件是否位於您預期的位置。

如果發生錯誤,首先檢查依賴庫的包含,是否存在 CodeDependencies.iss y netcorecheck_x64.exe以及發布路徑。很多時候,錯誤是因為路徑拼字錯誤、檔案遺失或 無效的 GUID 在 AppId 中。

推薦的測試

為了驗證一切是否順利運行,最好在虛擬機器上安裝。這樣,您可以確認安裝程式是否複製了所有檔案、建立了捷徑、管理了依賴項(例如 .NET 6),並且(如果適用) 安裝並啟動服務 不會與主機系統衝突。

執行安裝程式後,請確認您的應用程式是否正常運作。如果它是一個服務,請使用 Windows 服務工具或 sc query. 檢查它是否執行其任務(例如,將記錄寫入檔案),並且當機器重新啟動時,服務 保持自動.

嘗試從控制面板卸載。這應該會停止並刪除服務,從安裝資料夾中刪除檔案(除了您選擇保留的檔案),並刪除捷徑和系統條目。如果某些內容無法正確刪除,請查看「執行」和「卸載運行」部分,以調整操作順序或 sc.exe 參數.

透過這套準備工作(x64)、謹慎的發布、依賴項檢查和服務生命週期控制的組合,Inno Setup 讓您能夠為使用者提供專業的安裝程序。遵循這些步驟並監控關鍵點(唯一 GUID、PublishFolder 中的通配符、權限和語言),建立和維護 Windows 安裝程式將變得更加輕鬆。 可預測、可重複且無意外.

exe安裝程式
相關文章:
如何為 Windows 程式建立自己的安裝程式