啟動
目前嘗試使用 Windows Installer 的每個安裝都是從檢查安裝程式是否存在於使用者的電腦上開始,如果不存在,使用者和電腦是否準備好安裝 Windows Installer。 Windows Installer SDK 提供安裝程式應用程式 Instmsi.exe ,其中包含安裝 Windows Installer 的所有邏輯和功能。 不過,啟動載入應用程式必須管理此安裝。
啟動載入應用程式必須先檢查是否已安裝 Windows Installer。 應用程式可以使用 DllGetVersion來取得目前安裝的 Windows Installer 版本。 如果目前未安裝 Windows Installer,啟動載入應用程式必須查詢作業系統,以判斷需要哪個版本的Instmsi.exe。 安裝 Windows Installer 之後,啟動載入應用程式必須處理來自Instmsi.exe應用程式的傳回碼,並處理 Windows Installer 安裝期間所產生的任何重新開機。 如需詳細資訊,請參閱 判斷 Windows Installer 版本
下列範例示範如何安裝 Microsoft Office 2000 的安裝程式應用程式檢查使用者的系統,並設定 Windows Installer 安裝。 此範例特別撰寫來安裝 Office 2000,而且應該只做為一般參考。
當使用者將 Office 2000 CD-ROM 插入電腦時,Setup.exe嘗試根據使用者的需求啟動維護模式、安裝應用程式或完全不執行任何動作。 下一節說明名為 Setup.exe 的 Office 2000 安裝程式應用程式如何限定使用者及其電腦、建構命令列,並使用 Msiexec.exe 應用程式安裝 Windows Installer。
安裝 Office 2000 時,如何Setup.exe啟動 Windows Installer
使用者將 Office 2000 CD-ROM 插入其電腦。 Windows 作業系統會使用 /autorun 參數和 Autorun.inf 檔案起始Setup.exe。 Autorun.inf 檔案位於 Office 2000 CD-ROM 的根目錄,並包含下列各節:
[自動執行]
[Office 功能]
[產品資訊]
[ServicePack]。
[自動執行] 區段包含一個命令列,可執行Setup.exe應用程式、執行用來顯示光碟的圖示,並包含將 [安裝] 選項和 [設定] 選項新增至 CD-ROM 操作功能表的資訊。
[Office 功能] 區段包含功能與功能名稱組的清單。
[產品資訊] 區段會指定應用程式的名稱和版本。
[ServicePack] 區段可讓網路系統管理員設定所需的最低 Service Pack 層級。 如果本機作業系統沒有必要的 Service Pack,網路系統管理員可以使用本節來撰寫所顯示的警示訊息文字。
以下是 Autorun.inf 範例。
[autorun] OPEN=setup.EXE /AUTORUN /KEY:Software\Microsoft\Office\9.0\Common\General\InstallProductID ICON=setup.EXE,1 shell\configure=&Configure shell\configure\command=setup.EXE shell\install=&Install shell\install\command=setup.EXE [OfficeFeatures] Feature1=ACCESSFiles Feature2=OfficeFiles Feature3=WORDFiles Feature4=EXCELFiles Feature5=PPTFiles [ProductInformation] DisplayName=Microsoft Office 9 Version=9.0 ProductCode={product guid} [ServicePack] MessageText="The operating system does not have a required service pack. Please download and install this from www.microsoft.com." SPLevel=3
Setup.exe應用程式會檢查_MsiPromptForCD mutex。 Windows Installer 會在提示使用者插入 CD-ROM 時建立此 Mutex。 Mutex 的存在表示 Windows Installer 正在執行已要求 Office 2000 CD-ROM 的安裝。 在此情況下,Setup.exe應用程式會立即結束,並允許 Office 2000 安裝繼續。 如果 mutex 不存在,Setup.exe應用程式會在評估登錄機碼的步驟 3 繼續,以判斷是否已安裝 Office 2000。
Setup.exe應用程式會檢查 Office9 登錄機碼是否存在:
HKCU/Software/Microsoft/Office/9.0/Common/General/InstallProductID
如果此登錄機碼不存在,Setup.exe應用程式會繼續執行步驟 6,其中會檢查作業系統,以判斷其是否符合 Office 2000 的安裝資格。
如果 Office 2000 登錄機碼存在,Setup.exe應用程式會呼叫 MsiQueryProductState來檢查目前的安裝狀態。 InstallState_Default的傳回狀態表示已安裝 Office 2000,且Setup.exe應用程式會繼續在步驟 5 中檢查 Office 2000 是否從來源執行。
如果未安裝 Office 2000,Setup.exe應用程式會繼續執行步驟 6,其中會檢查作業系統,以判斷其是否符合 Office 2000 的安裝資格。
Setup.exe應用程式會針對 Autorun.inf 檔案[OfficeFeatures]區段中的每個功能呼叫MsiQueryFeatureState。 如果其中任一功能傳回INSTALLSTATE_SOURCE,這表示正在從來源執行此功能,而Setup.exe應用程式會立即結束。
如果沒有任何功能傳回INSTALLSTATE_SOURCE,Setup.exe應用程式會啟動安裝程式應用程式,Msiexec.exe,並在結束之前呈現 Windows Installer 維護模式。
Setup.exe應用程式會決定作業系統是否符合 Office 2000 的安裝資格。 需要 Windows XP 才能安裝 Office 2000。 如果作業系統需要 Service Pack 更新才能符合 Office 2000 資格,Setup.exe應用程式會顯示 Autorun.inf 檔案中指定的文字。 如果作業系統不符合 Office 2000 或 Office 2000 升級的資格,Setup.exe應用程式會顯示一則訊息,防止使用者繼續。
如果作業系統符合 Office 2000 的資格,Setup.exe應用程式會繼續執行步驟 7,以判斷是否已在使用者的電腦上安裝 Windows Installer。
如果 Windows Installer 存在於使用者的電腦上,Setup.exe應用程式會啟動Msiexec.exe應用程式,並將 Office 2000 .msi 檔案傳遞給它。
如果未在本機電腦上安裝 Windows Installer,Setup.exe應用程式會繼續執行步驟 8,以判斷作業系統是否符合安裝 Windows Installer 的資格。
如果本機電腦符合安裝 Windows Installer 的資格,Setup.exe應用程式會針對平臺執行正確的Instmsi.exe安裝程式應用程式版本。 Setup.exe可能會傳遞 「/q」 命令列參數來隱藏使用者介面,並防止使用者變更任何安裝組態選項。
Setup.exe應用程式會載入新安裝的 Msi.dll 檔案,並呼叫 MsiInstallProduct 函式以安裝使用者的應用程式。
Setup.exe命令列參數
Setup.exe應用程式可讓系統管理員和使用者將命令列選項傳遞至Msiexec.exe應用程式。 如需詳細資訊,請參閱 命令列選項。 下表列出可與Setup.exe搭配使用的命令選項。
選項 | 使用方式 | 意義 |
---|---|---|
/autorun | setup.exe /autorun | 執行上述的 Autorun.inf。 |
/a | setup.exe /a | 起始系統管理安裝。 |
/J | [u|m]封裝或 [u|m]封裝 /t 轉換清單 或 [u|m]套件 /g LanguageID |
公告產品。 此選項會忽略命令列上輸入的任何屬性值。 u 公告給目前的使用者。 m 公告給電腦的所有使用者。 g 語言識別項 t 將轉換套用至公告的套件。 |
/I | setup.exe /I Office9.msi /t ProgramMgmt.mst | 指定要安裝Setup.exe.msi檔案。 如果未包含 /I 選項,Setup.exe會使用 Office9.msi 檔案。 |
/o <屬性值=> | setup.exe /o CDKEY=111111-1111 | 設定.msi檔案中的屬性。 Setup.exe將這些內容傳遞至 msiexec,如已寫入。 |
/q | setup.exe /q | 設定安裝 UI 層級。 /q no UI (/qn for msiexec.) /qb basic UI /qr 縮減 UI。 |
/m# | setup.exe /m4 | 根據 Select 合約支援多個授權。 授權驗證自訂動作會使用這個屬性來寫入 LV 憑證。 /m 選項後面必須加上允許的解除鎖定數目。 /m 選項所指定的值應該設定為Office9.msi檔案中的 「M」 屬性。 如果未指定任何值,但 /m 選項會與安裝程式搭配使用,則應該設定 0 的值。 需要 /m 選項,才能支援使用 CD 或網路選取客戶。 |
/settings | setup.exe /settings mysettings.ini | 可讓系統管理員指定要在 Office 2000 安裝程式期間傳遞之所有自訂設定的.ini檔案。 請參閱下方.ini檔案的描述。 |
使用.ini檔案
建立初始化檔案可能比建立長命令列更容易。 使用 /settings 選項,Setup.exe應用程式會讀取指定的.ini檔案,並建構命令列以傳遞至Msiexec.exe應用程式。 .ini檔案僅支援命令列支援的屬性。 如果在.ini檔案和命令列中找到屬性或值,命令列設定會覆寫.ini檔案設定。
.ini檔案格式為:
[msi]
[mst]
[options]
[顯示]
.ini檔案的 [msi] 區段會指定安裝套件的路徑。 這會對應至命令列上的 /I 選項。
.ini檔案的 [mst] 區段會指定與此安裝搭配使用的轉換路徑。 這會對應至命令列上的 /j 選項。 使用 MST1 MST (N) ,以不同行表示多個轉換。 剖析成命令列時,.ini檔案中的清單會從左至右轉。 請注意,與 MST (N) 標題相關聯的數位只存在以維護唯一識別碼,而且沒有程式設計意義。
[選項] 區段可讓網路系統管理員在 .msi 或 .mst 檔案中設定和覆寫屬性。 .ini檔案中設定的選項會使用 /o 選項新增至命令列。 選項區段中的每個選項都必須有屬性名稱和值。
[顯示] 區段是用來設定安裝期間所使用的使用者介面層級。 這會對應至命令列上的 /q 選項。 有效值為 none、basic、reduced 和 full。
範例.ini檔案
[MSI]
MSI=\\sourceshare\Office2000\Office2000.msi
[MST]
MST1=\\sourceshare\Office2000\trns1.mst
MST2=\\sourceshare\Office2000\trns2.mst
[選項]
PUBLICPROPERTY=您的值
[顯示]
Display=None