Installutil.exe (安裝程式工具)
安裝程式工具是一種命令列公用程式,可讓您透過執行指定之組件中的安裝程式元件,來安裝和解除安裝伺服器資源。 這個工具可以與 System.Configuration.Install 命名空間中的類別一起使用。
此工具會自動與 Visual Studio 一起安裝。 若要執行此工具,請使用 Visual Studio 開發人員命令提示字元或 Visual Studio Developer PowerShell。
在命令提示字元上鍵入下列字行:
語法
installutil [/u[ninstall]] [options] assembly [[options] assembly] ...
參數
Argument | 描述 |
---|---|
assembly |
要執行安裝程式元件之組件的檔案名稱。 如果您要使用 /AssemblyName 選項指定組件的強式名稱,請略過此參數。 |
選項。
選項 | 描述 |
---|---|
/h[elp] -或- /? |
顯示工具的命令語法和選項。 |
/help 集會-或- /? 集會 |
顯示指定之組件中的個別安裝程式所辨識的其他選項,以及 InstallUtil.exe 的指令語法和選項。 這個選項會將每個安裝程式元件之 Installer.HelpText 屬性所傳回的文字加入至 InstallUtil.exe 的説明文字。 例如,如果 ServiceProcessInstaller.Account 是 ,則會/username 提供 和 /password User 選項。 |
/AssemblyName "assemblyName,Version=major.minor.build.revision ,Culture=locale ,PublicKeyToken=publicKeyToken" |
指定組件的強式名稱,必須在全域組件快取中登錄此名稱。 您必須利用組件的版本、文化特性 (Culture) 和公開金鑰語彙基元 (Token) 以完整限定組件名稱。 必須以引號括住完整名稱。 例如,"myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0" 就是完整的組件名稱。 |
/InstallStateDir=[ directoryName ] |
指定 .InstallState 檔案的目錄,其中包含用於解除安裝組件的資料。 預設是包含組件的目錄。 |
/LogFile= [filename] |
指定記錄安裝進度的記錄檔名稱。 預設情況下,如果省略 /LogFile 選項,則會建立名為 assemblyname.InstallLog 的記錄檔。 如果省略 filename,則不會產生任何記錄檔。 |
/LogToConsole ={true |false } |
如果為 true ,則會在主控台顯示輸出。 如果為 false (預設值),則隱藏對主控台的輸出。 |
/ShowCallStack |
如果在安裝期間的任何時間點上發生例外狀況,則將呼叫堆疊輸出到記錄檔。 |
/u [ninstall ] |
解除安裝指定的組件。 不同於其他選項,/u 會套用至所有組件 (與選項出現在命令列上的位置無關)。 |
其他安裝程序選項
組件中使用的個別安裝程式可能會辨識列在選項區段以外的選項。 若要了解這些選項,請在命令列上使用組件路徑搭配 /?
或 /help
選項以執行 InstallUtil.exe。 若要指定這些選項,請在命令列上將這些選項與 InstallUtil.exe 辨識的選項包含在一起。
注意
個別安裝程式元件所支援之選項上的說明文字由 Installer.HelpText 屬性傳回。 已經在命令列上輸入的個別選項可透過程式設計方式從 Installer.Context 屬性中存取。
所有選項和命令列參數皆會寫入安裝記錄檔。 不過,如果您使用 /Password
某些安裝程式元件所辨識的參數,密碼資訊會由八個星號取代, 而且不會出現在記錄檔中。
重要
在某些情況下,傳遞給安裝程式的參數可能包含機密或可識別個人身分的資訊,這些資訊預設是寫入到純文字的記錄檔。 若要防止此行為,您可以在命令行上指定 /LogFile=
(沒有 filename 自變數)來隱藏記錄檔。
備註
.NET Framework 應用程式是由傳統程式檔和相關聯的資源所組成,例如消息佇列、事件記錄檔和性能計數器,必須在部署應用程式時建立。 安裝應用程式時,您可以使用組件的安裝元件來建立這些資源,並在解除安裝應用程式時移除它們。 Installutil.exe 會偵測並執行這些安裝程式元件。
您可以在相同命令列上指定多個組件。 任何出現在組件名稱之前的選項都會套用到該組件的安裝。 除了 /u
和 /AssemblyName
之外,選項可以累積但不可覆寫。 也就是說,除非以新的值指定選項,否則為一個組件指定的選項會套用到所有後續的組件。
如果對組件執行 Installutil.exe 而沒有指定任何選項的話,它會將下列三個檔案放置到組件的目錄中:
- InstallUtil.InstallLog:包含安裝進度的一般說明。
- assemblyname.InstallLog - 包含安裝程序認可階段的特定資訊。 如需關於認可階段的詳細資訊,請參閱 Commit 方法。
- assemblyname.InstallState - 包含用來解除安裝組件的資料。
Installutil.exe 使用反射來檢查指定的組件並找到所有 Installer 類型,這些類型的 System.ComponentModel.RunInstallerAttribute 屬性設定為 true
。 然後工具會在 Installer.Install 類型的每個執行個體上執行 Installer.Uninstall 或 Installer 方法。 Installutil.exe 會以交易方式執行安裝;也就是說,如果其中一個組件安裝失敗,便會復原所有其他組件的安裝。 解除安裝不是可異動的。
Installutil.exe 無法安裝或解除安裝延遲簽署的組件,但是可以安裝或解除安裝強式命名的組件。
32 位版本的 Common Language Runtime (CLR) 只隨附 32 位版本的 Installer 工具,但 64 位版本的 CLR 隨附於 32 位和 64 位版本的 Installer 工具。 使用 64 位 CLR 時,請使用 32 位安裝程式工具來安裝 32 位元件,並使用 64 位安裝程式工具來安裝 64 位和通用中繼語言 (CIL) 元件。 這兩種版本的安裝程式工具會有相同的行為方式。
您無法使用 Installutil.exe 來部署使用 C++ 建立的 Windows 服務,因為Installutil.exe無法辨識C++編譯程式所產生的內嵌機器碼。 如果您嘗試使用 Installutil.exe 部署 C++ Windows 服務,就會擲回類似 BadImageFormatException 的例外狀況。 若要處理這種案例,請將服務程式碼移至 C++ 模組,然後以 C# 或 Visual Basic 撰寫安裝程式物件。
範例
下列命令會顯示 InstallUtil.exe 命令語法及選項的描述。
installutil /?
下列命令會顯示 InstallUtil.exe 命令語法及選項的描述。 如果已將說明文字指派給安裝程式的 Installer.HelpText 屬性,還會顯示 myAssembly.exe
中的安裝程式元件所支援的選項描述和清單。
installutil /? myAssembly.exe
下列命令會執行 myAssembly.exe
組件中的安裝程式元件。
installutil myAssembly.exe
下列命令會使用 /AssemblyName
參數和完整名稱,執行組件中的安裝程式元件。
installutil /AssemblyName "myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0"
下列命令會執行檔案名稱及強式名稱所指定之組件中的安裝程式元件。 請注意,所有依檔案名稱指定的組件必須在命令列中以強式名稱指定的組件之前,因為不可覆寫 /AssemblyName
選項。
installutil myAssembly.exe /AssemblyName "myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0"
下列命令會執行 myAssembly.exe
組件中的解除安裝程式元件。
installutil /u myAssembly.exe
下列命令會執行組件 myAssembly1.exe
和 myAssembly2.exe
中的解除安裝程式元件。
installutil myAssembly1.exe /u myAssembly2.exe
因為 /u
選項在命令列中的位置並不重要,因此這會等於下列指令。
installutil /u myAssembly1.exe myAssembly2.exe
下列命令會執行 myAssembly.exe
組件中的安裝程式,並指定將進度資訊寫入 myLog.InstallLog
。
installutil /LogFile=myLog.InstallLog myAssembly.exe
下列命令會執行組件 myAssembly.exe
中的安裝程式、指定要將進度資訊寫入 myLog.InstallLog
,然後使用安裝程式的自訂 /reg
選項指定要對系統登錄進行更新。
installutil /LogFile=myLog.InstallLog /reg=true myAssembly.exe
下列命令會執行組件 myAssembly.exe
中的安裝程式、使用安裝程式的自訂 /email
選項指定使用者的電子郵件地址,並隱藏對記錄檔的輸出。
installutil /LogFile= /email=admin@mycompany.com myAssembly.exe
下列命令會將 myAssembly.exe
的安裝進度寫入到 myLog.InstallLog
,並且將 myTestAssembly.exe
的進度寫入到 myTestLog.InstallLog
。
installutil /LogFile=myLog.InstallLog myAssembly.exe /LogFile=myTestLog.InstallLog myTestAssembly.exe