這是歷史版本頁面 — 看 Inno Setup 最新版本

想自己包裝安裝檔?Inno Setup 能幫你做到什麼

Inno Setup 軟體圖示 Inno Setup 5.2.0 資料更新 2007-09-20 閱讀約 6 分鐘

寫好的程式要丟給別人用,最怕的就是對方不會裝。你明明把檔案都整理好了,對方卻不知道要解壓縮到哪裡、捷徑要放哪、登錄檔要不要改。每次都要寫一份安裝說明,對方還不一定照著做,最後變成你親自遠端連線幫他處理。這種「軟體做好了,但交不到使用者手上」的卡關,其實是很多開發者、甚至只是偶爾做小工具的人共同的痛。

一般人最直覺的做法,是把整個資料夾壓成 ZIP 丟過去。但 ZIP 只能解決「檔案打包」,解決不了「安裝過程」——不會自動建捷徑、不會寫登錄檔、不會處理系統元件、解除安裝時還會留下一堆垃圾。安裝程式製作工具切入的點,就是把「安裝」這件事變成一個可重複執行的腳本:你要複製哪些檔案、寫哪些設定、建哪些捷徑、安裝完要不要跑什麼程式,全部寫成一份定義檔,編譯之後就是一個標準的安裝程式。使用者只要一直按「下一步」就好。

Inno Setup 操作介面
Inno Setup 的操作介面

01Inno Setup 到底是做什麼用的?

它是一套把軟體打包成 Windows 安裝程式的工具。你寫好的程式、需要的檔案、要寫入的登錄檔或 INI 設定、要建立的捷徑,全部寫進一份腳本,編譯後會產生一個 .exe 安裝檔。使用者執行這個安裝檔,照著精靈畫面按下一步就能裝好。它也負責產生解除安裝程式,使用者日後可以從控制台移除。

02它做出來的安裝檔長什麼樣子?是傳統那種一直按下一步的嗎?

是。預設就是標準的安裝精靈介面,使用者一路按「下一步」就能完成安裝。你也可以設定安裝類型,例如完整安裝、精簡安裝、自訂安裝,讓使用者自己選要裝哪些元件。安裝過程可以建立開始功能表捷徑、桌面捷徑,也可以設定安裝完自動執行程式。

03能不能做靜默安裝?就是使用者不用按任何按鈕的那種。

可以。它支援靜默安裝和靜默解除安裝,安裝程式可以用參數控制,執行時完全不顯示介面,適合企業大量部署或自動化腳本呼叫。這在官方文件裡有明確支援,實際使用時需要查一下對應的參數寫法。

04安裝包能不能加密或設密碼?

可以。它支援密碼保護和加密的安裝包,使用者必須輸入正確密碼才能開始安裝。另外也支援數位簽章,安裝檔可以簽名,減少 Windows SmartScreen 的警告。不過簽章需要你自己另外準備憑證,這部分工具本身不提供。

Inno Setup 介面畫面 2
Inno Setup 介面畫面

05它能不能處理登錄檔和 INI 設定?

可以。腳本裡可以定義要新增或修改的登錄檔機碼,也可以寫入 .INI 檔案。安裝時會自動寫入,解除安裝時可以選擇是否一併移除。這對很多需要寫入系統設定的軟體來說是必備功能,不用另外寫程式去處理。

06我不太會寫程式,這套軟體我用得來嗎?

它提供一個精靈模式,可以一步步引導你建立基本腳本,不需要從零開始寫。但精靈能涵蓋的只是簡單的檔案複製和捷徑建立,如果要處理登錄檔、條件判斷、多語言介面這些進階功能,就必須自己寫腳本。它的腳本語言以 Pascal 為基礎,有程式概念的人會比較好上手。

07這套軟體適合個人開發者還是大型團隊?

兩者都有人用。它是開放原始碼、免費,個人開發者或小團隊不需要付授權費就能拿來做商業軟體的安裝程式。大型專案也有案例,官方資料提到微軟的 Visual Studio Code 和 Embarcadero Delphi 就是用這套工具打包的。不過大型團隊如果需求很複雜,可能要搭配它的腳本引擎做更多客製化。

08它的介面是英文的,會不會很難用?

介面確實是英文,沒有官方中文介面。但基本操作流程不算複雜:開新腳本、用精靈填資料、編譯,這幾個步驟就算英文不熟也能摸索得出來。比較需要閱讀英文的是進階腳本語法的文件,如果完全不看英文,學習曲線會比較陡。做出來的安裝程式介面則可以設定多國語言,包含繁體中文,這和使用者介面的英文是兩回事。

Inno Setup 介面畫面 3
Inno Setup 介面畫面

09它跟 NSIS 比起來,哪個比較多人用?

兩者在這個資料庫的評分人數都是 42 人,分數也接近,沒有明顯的差距。NSIS 也是開放原始碼的安裝程式製作工具,兩者功能定位重疊。實際選擇通常取決於你熟悉哪一套的腳本語法,以及你需要哪些特定功能。建議兩套都裝來試做一次,看哪個比較符合你的習慣。

10有沒有什麼情況不該選它?

如果你需要一個所見即所得的圖形化編輯介面,它沒有官方 GUI 編輯器,這點官方資料有明確提到。另外它只做 Windows 安裝程式,不支援 macOS 或 Linux。如果你的軟體需要跨平台安裝包,它幫不上忙。還有它沒有內建的更新系統,軟體要自動更新得另外搭配其他方案。

11它的更新頻率如何?會不會裝了之後沒人維護?

這個資料庫收錄了 60 個版本,最近一年內更新了 10 次,最近兩年內更新了 16 次,屬於持續在維護的專案。原始開發者 Jordan Russell 從 1997 年就開始做這套工具,原始碼放在 GitHub 上,也有接受捐款贊助開發。以開源專案來說,它的維護狀況算是穩定的。

12評分人數只有 42 人,會不會代表用的人很少?

評分人數少不代表使用人數少,只能說在這個資料庫裡留下評分的人不多。它的官方資料提到被微軟和 Embarcadero 的產品採用,而且開放原始碼、免費、功能完整,這些都是可以查證的事實。如果你擔心的是社群活躍度,可以到 GitHub 上看它的 issue 討論和 commit 紀錄,會比評分人數更準。

下載與官方連結

前往官方網站 下載 Inno Setup

isetup-5.2.0.exe · 1.34 MB · 連結指向軟體原廠

版本紀錄

再看 5 筆

看完整版本清單

這一版改了什麼

What's new in this version:

* On Windows Vista, [Run] section entries with the postinstall flag no longer inherit Setup's elevated privileges by default, and instead now execute with the (normally non-elevated) credentials of the user that started Setup initially. (There are some exceptions; see the runasoriginaluser flag documentation for details.)
* Added new [Run] section flags: runascurrentuser and runasoriginaluser. These control which user credentials are used on Windows Vista when spawning processes. (runasoriginaluser is the default when the postinstall flag is used; runascurrentuser is the default otherwise.)
* Improved compression of x86 executable files. (This reduced the size of Inno Setup's own installer by approximately 10 KB.)
* Added new [Files] section parameter: ExternalSize.
* Added new constant: {log}. Translates to the log file name, or an empty string if logging is not enabled.
* Added new [Files] and [Dirs] sections flags: setntfscompression and unsetntfscompression. These flags instruct Setup to enable or disable NTFS compression on the file or directory.
* Pascal Scripting:
o Added new ExecAsOriginalUser, ShellExecAsOriginalUser, and SetNTFSCompression support functions.
o Now supports new DLL loading flag loadwithalteredsearchpath to load DLLs with the Windows flag LOAD_WITH_ALTERED_SEARCH_PATH.
* The Setup loader now uses the original Setup EXE filename + .tmp as the filename for the extracted Setup executable instead of a name comprised of random letters and numbers, which may have seemed suspicious to firewall users.
* In a multilingual installation, Setup now waits until after the Select Language dialog is shown to display any error messages concerning the user's Windows version or privilege level.
* Fix: On Windows Vista, AutoPlay wasn't being suppressed when the user swapped out discs in a disk-spanned install.
* Fix: When the waituntilidle flag was used in the [UninstallRun] section, it behaved like waituntilterminated.
* Based on RemObjects Pascal Script SVN code revision 1045a.
* The uninstall program's version is now 51.48.0.0.