Installutil.exe (安裝程式工具)
更新:2011 年 4 月
安裝程式工具是一種命令列公用程式,可讓您透過執行指定之組件中的安裝程式元件,來安裝和解除安裝伺服器資源。 這個工具可以與 System.Configuration.Install 命名空間中的類別一起使用。
這個工具會自動隨 Visual Studio 和 Windows SDK 一起安裝。 若要執行工具,建議您使用 Visual Studio 命令提示字元或 Windows SDK 命令提示字元。 這些公司可讓您輕鬆地執行工具,而不需瀏覽至安裝資料夾。 如需詳細資訊,請參閱Visual Studio 和 Windows SDK 命令提示字元。
如果您已經在電腦上安裝 Visual Studio:在工作列上,依序按一下 Start、All Programs、Visual Studio、Visual Studio Tools,然後按一下 Visual Studio Command Prompt。
-或-
如果您已經在電腦上安裝 Windows SDK:在工作列上,依序按一下 Start、All Programs、Windows SDK 的資料夾,然後按一下Command Prompt(或 CMD Shell)。
在命令提示字元中輸入下列文字:
installutil [/u[ninstall]] [options] assembly [[options] assembly] ...
參數
引數 |
描述 |
---|---|
assembly |
要執行安裝程式元件之組件的檔案名稱。 如果您要使用 /AssemblyName 選項指定組譯碼的強式名稱,請略過此參數。 |
選項
選項 |
描述 |
---|---|
/h[elp] -或- /? |
顯示工具的命令語法和選項。 |
/help assembly -或- /? assembly |
顯示指定組件中的個別安裝程式所辨識的其他選項,以及 InstallUtil.exe 的指令語法和選項。 這個選項會將每個安裝程式元件之 Installer.HelpText 屬性所傳回的文字加入至 InstallUtil.exe 的説明文字。 |
/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參數,會以八個星號 (*) 取代密碼資訊,因此密碼不會出現在日誌檔中。
重要事項 |
---|
在某些情況下,傳遞給安裝程式的參數可能包含機密或可識別個人身份的資訊,這些資訊預設是寫入到純文字的日誌檔。若要防止這個行為,您可以在命令列上的 Installutil.exe 後面指定 /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 型別的每個執行個體上執行 Installer.Install 或 Installer.Uninstall 方法。 Installutil.exe 以交易方式執行安裝;也就是,如果其中一個組件安裝失敗,它會復原所有其他組件的安裝。 解除安裝不是可異動的。
Installutil.exe 無法安裝或解除安裝延遲簽署的組件,但是可以安裝或解除安裝強式命名的組件。
從 .NET Framework 2.0 版開始,32 位元版本的 Common Language Runtime (CLR) 會僅隨附於 32 位元版本的安裝程式工具中的狀態,但是 64 位元版本的 CLR 則會隨附於 32 位元和 64 位元版本的安裝程式工具中。 當您使用 64 位元的 CLR 時,請使用 32 位元的安裝程式工具來安裝 32 位元的組件,並使用 64 位元的安裝程式工具來安裝 64 位元和 Microsoft Intermediate Language (MSIL) 的組件。 這兩種版本的安裝程式工具會有相同的行為方式。
您不能使用 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
請參閱
參考
Visual Studio 和 Windows SDK 命令提示字元
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2011 年 4 月 |
加入使用 Visual Studio 和 Windows SDK 命令提示字元的相關資訊。 |
資訊加強。 |