靜默安裝有助於在不打擾使用者、也不需要每位員工手動核准並安裝的情況下,將應用程式和更新部署到各個裝置。不過,IT 團隊在嘗試從 EXE 安裝程式執行靜默安裝時,可能會遇到困難。
MSI 安裝程式 會透過 msiexec 共用一組無訊息安裝參數,讓無訊息安裝命令更容易部署,但 EXE 安裝程式缺乏這種一致性。參數會依建立安裝程式的工具而有所不同,因此 /S 命令可能在某個 EXE 上有效,但在下一個上可能完全沒有作用。本指南中的參數在 Windows 10 和 Windows 11 上的運作方式相同。
有鑑於此,接著來看看 silent install EXE commands、一些常見參數、如何識別安裝程式框架,以及如何處理 silent installs 與其可能面臨的障礙。
以靜默方式安裝 EXE 檔案的常用參數
所需的靜默安裝參數,取決於建置該 EXE 的框架。雖然市面上有多種變化版本,但仍可及早辨識安裝程式框架與靜默安裝命令。
常見的靜默安裝參數包括:
安裝程式架構 | silent install command | 注意 |
InstallShield(基本 MSI) |
|
|
InstallShield(InstallScript) |
| 需要已錄製的回應檔案( |
Inno Setup |
|
|
NSIS (Nullsoft) |
| 區分大小寫: |
WiX Burn 套件組合 |
| 執行套件並加上 |
Advanced Installer EXE |
|
|
即使已經找到靜默安裝參數,也請務必先測試,再嘗試部署到多台裝置。錯誤的參數可能會讓安裝卡在沒人看得到的提示畫面上,因此花時間先在單一機器上測試是值得的。
步驟 1:識別是哪一種工具建立了安裝程式
首先,需要先識別安裝程式使用的是哪個框架。EXE 安裝程式通常是以封裝工具建立的包裝程式,例如 InstallShield、NSIS 或 Advanced Installer。每種工具都有各自的參數,因此先識別工具,就能把可選範圍縮小到一兩種。
可透過幾種方式辨識這個工具:
執行安裝程式並加上
/?或/help:說明視窗通常是辨識工具最簡單的方式,因為許多安裝程式會列出其選項或標示工具名稱。Microsoft 的 WinGet 文件建議執行安裝程式時加上-?,以找出其靜默安裝參數。查看安裝精靈:安裝精靈通常會標示封裝工具名稱。可以先正常啟動,然後查看標題列、品牌標示或 About 文字,看看是否有列出相關資訊。請務必在安裝前先取消,因為接下來還有幾個步驟需要先完成。
檢查該應用程式的 WinGet manifest。如果該應用程式位於 Windows Package Manager community repository 中,就可以查看它的 manifest 記錄 。其中通常會包含安裝程式類型,例如 Inno、Nullsoft、WiX、Burn 或 MSI。
如果這些方法都無效,可以查看製造商的部署文件以取得更多資訊。
步驟 2:找出 EXE 的靜默安裝參數
接下來,您需要找出無訊息安裝參數是什麼。可用幾種方式來處理,包括:
查看製造商的部署文件
製造商通常會提供安靜安裝選項,尤其是在支援企業部署時。查看文件通常能直接找到安靜安裝的切換參數,因此這應該是第一個先查看的地方。文件通常會告訴您切換參數是什麼,也可能包含製造商新增的自訂選項,例如授權金鑰或功能選擇。
查看安裝程式的說明輸出
如果文件說明不夠清楚,可以查看安裝程式的說明輸出。做法是在命令提示字元中使用 /? 或 /help 執行 EXE;如果出現使用說明視窗,裡面通常會列出支援的選項。如果它沒有說明輸出,則需要取消安裝並改用其他方法。
查找該應用程式的 WinGet 資訊清單
如果某個應用程式位於 WinGet’s community repository 中,就必須支援靜默安裝。您可以在 GitHub 上搜尋 winget-pkgs 儲存庫,找出該應用程式記錄的安裝程式類型和靜默參數。
最後不得已時可試試 Universal Silent Switch Finder
如果其他方法都行不通,Universal Silent Switch Finder 是一款免費的舊版工具,可檢查 EXE 並依其安裝程式類型建議可用參數。不過,它也有一些限制:原始網站已無法使用,而且對於未採用已知架構的自訂安裝程式,它無法找出參數。因此,如果需要使用它,請務必從可信任的來源下載,並測試建議的命令。
依安裝程式框架分類的靜默安裝參數
現在來看看幾個可能會遇到的靜默安裝參數。了解所使用的安裝程式框架類型,有助於更容易找出所需的安裝參數,因此這份清單可以幫助更輕鬆找到這些參數:
InstallShield 靜默安裝
InstallShield 靜默安裝方式可能取決於用來建置 setup.exe 的專案類型。這包括:
Basic MSI 專案:這些專案會執行
setup.exe /s /v"/qn",且不使用回應檔。/v和其值之間不能有空格,因此/v"/qn"可以運作,但/v "/qn"不行。也可以在/v引號內傳遞 MSI 屬性,例如:setup.exe /s /v"/qn INSTALLDIR=D:\Destination"。InstallScript 與 InstallScript MSI 專案:這些需要回應檔。先執行一次
setup.exe /r,將回答記錄到setup.iss檔案中,再執行setup.exe /s以靜默方式重播這些回答。針對這些情況,建議使用/f1設定回應檔路徑,並使用/f2設定記錄檔路徑,且兩者都必須是絕對路徑。
Inno Setup
對於 Inno,可使用 /SILENT 指令隱藏精靈,但仍顯示進度視窗;或使用 /VERYSILENT 隱藏所有內容。也可以使用 /SUPPRESSMSGBOXES 抑制訊息方塊,或使用 /NORESTART 防止自動重新啟動。
例如,使用 Inno 進行靜默安裝可能會像這樣: setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /LOG="C:\Logs\app.log"。
請注意,有些訊息方塊無法被抑制,而 /DIR= 需要完整限定路徑才能運作。
NSIS (Nullsoft)
使用 Nullsoft 時,可以使用 /S 命令執行安靜安裝。請注意,NSIS 選項會區分大小寫,因此 S 必須大寫。可以使用 /D= 將安裝資料夾設為最後一個選項,且不加引號(即使路徑中有空格也一樣)。
例如,您可以執行 setup.exe /S /D=C:\Program Files\App。
安裝程式作者可以覆寫這些預設值,因此如果製造商的文件提供了不同的命令,建議使用那些命令。
WiX Burn 套件組合
Burn 套件組合是將數個套件串接在一起的 EXE,通常是 MSI。請務必使用 /? 執行套件組合來確認其選項,因為這些選項可能已被自訂。
WiX Burn bundle 看起來可能像這樣:setup.exe /quiet /norestart /log C:\Logs\app.log。
Advanced Installer EXE
Advanced Installer EXE 可使用 /exenoui 隱藏包裝程式的介面,接著加上 msiexec 選項,將命令套用到其中的 MSI。可能會像這樣:setup.exe /exenoui /qn /norestart。
如何從命令列和 PowerShell 靜默安裝 EXE
命令列和 PowerShell 是安裝 EXE 最常見的兩種方式。如果要執行靜默安裝,可依照以下幾個簡單步驟操作:
從命令提示字元
若要從命令列靜默安裝 EXE,當安裝適用於所有使用者時,請以系統管理員身分執行命令提示字元。接著,切換到安裝程式所在的資料夾,並使用其參數執行 EXE。只要路徑中包含空格,務必將路徑加上引號。
請記住,有些 setup.exe 檔案會移交給第二個處理程序,並在安裝完成前就先返回命令提示字元。在這些情況下,會想使用 start /wait,讓命令提示字元等待到安裝完成為止。InstallShield Basic MSI 安裝程式也接受 /w。
從 PowerShell
如果使用 PowerShell,可以搭配 Start-Process 與 -ArgumentList、-Wait 和 -PassThru,然後從傳回的處理程序物件讀取結束代碼。Microsoft 建議將所有引數作為單一的 ArgumentList 字串傳遞,其中包含任何必要的引號字元。
例如,PowerShell 命令可能會像這樣:
$p = Start-Process -FilePath "C:\Installers\setup.exe" -ArgumentList "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART" -Wait -PassThru
$p.ExitCode
部署前先處理重新啟動和結束代碼
許多更新或安裝都需要重新開機才能順利完成。不過,靜默安裝可能會讓這件事變得更複雜。如果靜默安裝在使用者工作到一半時重新啟動電腦,可能會造成中斷。同時,如果安裝在裝置其實仍需要重新開機時就回報成功,也可能造成問題,並讓待處理的更新被標示為已完成。
接著來看結束代碼。結束代碼是安裝程式完成時回傳的數字,指令碼和部署工具會讀取這個數字,以判斷安裝是成功、失敗,還是需要重新啟動。這些代碼在以 MSI 為基礎的安裝中已標準化 (0 代表成功,而 3010 代表成功但需要重新啟動),但在 EXE 架構中可能會有所不同。
處理重新啟動和結束代碼時,有幾個重點需要留意:
Inno Setup 可能會在未警告的情況下重新開機:如果需要重新啟動且未使用
/NORESTART,/SILENT命令仍會顯示「"Reboot now?"」提示,而/VERYSILENT則會在未詢問的情況下重新啟動電腦。建議將/VERYSILENT與/NORESTART搭配使用,以確保安裝過程不中斷,不過如果安裝需要重新啟動,使用者之後仍需重新開機。Inno Setup 即使需要重新啟動也會回傳 0:有時系統會回報安裝已完成,即使其實仍需要重新啟動。您可以在指令中加入
/RESTARTEXITCODE=3010,讓部署工具能辨識是否有待重新啟動的情況。InstallShield Basic MSI 和 Advanced Installer 安裝程式會透過以下方式傳遞
msiexec選項: 在命令中的msiexec部分加入/norestart ,可抑制重新啟動,避免裝置在使用者工作期間意外重開機。先在一台電腦上測試結束代碼。部署更新前,請務必先測試該命令。先在 PowerShell 中執行命令、讀取結束代碼,並在設定部署工具之前確認成功時以及重新啟動待處理時各自會傳回什麼結果。
在 Intune 中,結束代碼會對應到傳回代碼類型,而各代碼的作用則取決於應用程式的裝置重新啟動設定。使用「Determine behavior based on return codes」時,硬重新開機代碼會立即重新啟動裝置,而軟重新開機代碼則會通知使用者需要重新啟動。因此,請務必確認安裝程式傳回的代碼符合 Intune 的預期。
排解常見的 EXE 靜默安裝問題
嘗試進行靜默安裝時,可能會遇到一些問題或困難。常見的 EXE 靜默安裝問題包括:
安裝程式忽略靜默安裝參數
如果安裝程式忽略靜默參數,可能表示該參數屬於不同的架構,或是大小寫錯誤。請務必再次確認製造商的文件、確認架構,並確保所有拼字都正確無誤。例如,NSIS 只接受大寫的 /S,因此如果忘了大寫,就會造成差異。
安裝卡住且始終無法完成
有時候,如果安裝未完成,表示它正在等待沒有人看得到的輸入。例如,如果 Intune 安裝等待超過其逾時時間(預設為 60 分鐘),就會被標示為失敗。常見原因包括一些 /SUPPRESSMSGBOXES 無法隱藏的 Inno Setup 訊息方塊,以及 /s 無法讓其以靜默模式執行的 InstallShield 必要條件。
路徑含有空格時安裝失敗
這又是另一種情況:指令中的錯字可能會造成決定性的差異。各種框架通常有不同的引號規則,若使用錯誤類型的引號或空格,可能會導致安裝失敗。例如,NSIS 的 /D= 必須放在最後,而且不能使用引號,即使路徑中有空格也一樣;而 InstallShield 則需要在 /v 值內使用逸出引號。
沒有記錄檔可顯示哪裡出了問題
如果出了問題,卻沒有明確跡象說明原因,該怎麼辦?如果在測試前沒有先啟用記錄,可能就無法判斷原因。請務必在測試前啟用記錄,並將記錄連接到現有資料夾。其中,Inno Setup 使用 /LOG="path" 指令,InstallShield 的 setup.exe 使用 /debuglog"path" ,而 WiX Burn bundles 則使用 /log。
此 EXE 沒有靜默安裝選項
有些 EXE 根本不提供靜默安裝選項。遇到這種情況時,請檢查製造商是否提供支援標準靜默安裝參數的 MSI 版本安裝程式。如果沒有,可能就需要重新封裝 EXE,而這通常需要一些專業作業。
使用 Microsoft Intune 部署靜默 EXE 安裝
如果使用的是 Microsoft Intune,在部署靜默 EXE 安裝時,有幾個 Win32 應用程式設定需要正確配置。Intune 會將 EXE 以 Win32 應用程式部署 ,並將安裝程式與支援檔案封裝成 .intunewin檔案。接著會上傳該檔案,並附上安裝命令、解除安裝命令和偵測規則。由於 Intune 不支援互動式安裝,因此安裝命令必須完全靜默。
這些命令包括:
安裝命令:EXE 名稱後接其靜默參數,以測試結果為準。請注意,Intune 也可以接受以 PowerShell 指令碼取代命令列。
解除安裝命令:何時以及如何解除安裝應用程式。請注意,這裡不會展開環境變數,因此如果解除安裝需要用到它們,建議使用包裝指令碼。
命令欄位中的 PowerShell:如果命令呼叫
powershell.exe,Intune 會啟動 32 位元版本的 PowerShell,而 Windows 會將其重新導向至 32 位元系統資料夾。若要改用 64 位元 PowerShell,請使用%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\powershell.exe。安裝行為:設定安裝行為時,對於需要管理員權限的安裝,建議選擇 System。如果以使用者內容執行的安裝需要使用者所沒有的管理員權限,就會失敗。
逾時:Intune 預設會等待 60 分鐘後才將安裝標記為失敗,但這項設定可調整為最長一天。
傳回代碼:建立應用程式時,Intune 會加入預設代碼。也可以新增安裝程式傳回的自訂代碼,例如為 Inno Setup 設定的
/RESTARTEXITCODE值。重試代碼會讓 Intune 嘗試三次,每次嘗試間隔五分鐘。偵測規則:至少需要一條規則,Intune 才能確認應用程式已安裝。請務必使用檔案、登錄機碼或指令碼規則,因為 EXE 沒有 MSI 產品代碼。
為什麼 EXE 靜默安裝在整個應用程式目錄中 會變得更困難
到了這一步,您可能會覺得 EXE 的安靜安裝比它應該有的還要複雜。每個 EXE 都需要先辨識其架構、確認切換參數、測試重新啟動與結束代碼行為、撰寫偵測規則等等。接著,當新更新推出時,整個流程又得重來一次。
每個應用程式都要重複這樣做,研究與測試很快就會變成相當沉重的工作量。
AI 驅動的封裝工具可以承擔大部分這類工作,即使在大型環境中也是如此。
Splashtop Agentic Packr 是一款由 AI 驅動的應用程式封裝工具,可自動化從安裝程式到 Intune 的流程。AI 代理會讀取安裝程式、建立套件,並在任何內容到達使用者之前先進行測試,而管理員也可先檢閱結果。
透過 Splashtop Agentic Packr,您可以:
分析安裝程式並建立套件:Splashtop Agentic Packr 會自動分析安裝程式,並建立包含安裝邏輯的 PSADT 套件,因此管理員不需要為每個新應用程式撰寫安裝指令碼。由於套件是基於 PSADT 建立,管理員可視需要開啟、檢視並調整。
在部署前進行測試:每個套件都會在乾淨的虛擬機器上測試,並進行安全性掃描,以確保其運作符合預期。管理員在發佈前會收到 QA 評分表和記錄檔以供審查,因此最終決定權在他們手上。
設定偵測規則和 Intune 封裝:Splashtop Agentic Packr 會寫入偵測規則、建立 Intune 套件,並將其發佈到 Intune。
偵測新版本:當新版本應用程式發布時,Agentic Packr 會偵測並自動建置更新後的套件,為 IT 團隊節省更多時間。
此外,也可將 Splashtop Agentic Packr 與 Splashtop AEM(Autonomous Endpoint Management)搭配使用,進一步提升部署效率。Splashtop Agentic Packr 可建置並測試套件,接著由 Splashtop AEM 在整個組織的各個裝置間自動部署。
少花時間處理參數,把更多時間用在部署上
每種 EXE 架構都有各自的參數、重新啟動行為等等。辨識每一項並正確設定,會讓靜默安裝變得困難,但這也是確保每一項都能安全部署的必要條件。
Splashtop Agentic Packr 可將安裝程式轉換為經過測試、可直接用於 Intune 的套件,無需手動撰寫指令碼,讓 IT 團隊能減少花在研究與測試每個新應用程式及更新上的時間。
想看看 Splashtop Agentic Packr 如何將安裝程式轉換為經過測試、可立即部署的套件嗎?立即深入了解,看看它如何實際運作。




