套件的指導方針
因為 Windows Vista 中的使用者帳戶控制 (UAC) 會在安裝期間限制許可權,因此 Windows Installer 套件的開發人員不應該假設其安裝一律可以存取系統的所有部分。
在大部分情況下,可透過組策略成功部署到標準使用者的安裝程式套件,在 Windows Vista 中也適用於 UAC。 如果 InstallUISequence 數據表包含 LaunchConditions 宏指令,或 LaunchCondition 數據表包含以 Privileged 屬性為基礎的條件,就會發生此情況的例外狀況。 因此,Windows Installer 套件開發人員應遵循下列指導方針,以確保其套件可與 UAC 和 Windows Vista 搭配運作。
- 在 InstallUISequence 資料表中包含含有動作的安裝內容條件時,請使用以 Privileged 屬性為基礎的條件語句。 請勿根據 AdminUser 屬性使用條件。
- 在安裝啟動條件中包含安裝內容時,請使用 InstallExecuteSequence 資料表中的自定義動作類型 19,並在 Privileged 屬性上設定自定義動作的條件。 請勿在 LaunchCondition 數據表中使用動作,以及以 AdminUser 屬性或 Privileged 屬性為基礎的條件。
- 若要讀取或修改系統設定,請使用 InstallExecuteSequence 資料表中的延後執行自定義動作。 請勿使用 InstallUISequence 資料表中的立即執行自定義動作來修改系統設定。
- 若要修改非使用者特定系統的元件,請使用 InstallExecuteSequence 數據表中的延後自定義動作。 您應該在自定義動作類型中包含 msidbCustomActionTypeNoImpersonate 位。
- 省略 Word Count Summary 屬性的值中的位 3,以指出封裝可能需要提升許可權。 除非不需要提高的許可權才能安裝此套件,否則請勿包含此位。
- 在應用程式的 [要求執行層級] 中包含指令清單。
- 在原始套件的 MsiPatchCertificate 數據表中包含憑證,並使用相同的憑證簽署所有修補程式。
- 如果需要提高的許可權才能安裝 Windows Installer 套件,套件的作者應該包含用來啟動安裝之 PushButton 控件的 ElevatShield 屬性。 這會提醒使用者按鍵會顯示 UAC 對話方塊,要求系統管理員授權繼續安裝。
- 將 MSIDEPLOYMENTCOMPLIANT 屬性設定為 1,以向 Windows Installer 指出套件已撰寫並測試,以符合 Windows Vista 中的 UAC。 如果未設定此屬性,安裝程式會判斷套件是否符合UAC。
在 組策略之外,您可以在 Windows XP 上使用下列 UAC 合規性檢查。
檢查組策略以外的UAC合規性
以系統管理員身分登入計算機。
針對每部電腦安裝公告套件:
msiexec /jm package.msi
註銷電腦。
以標準使用者身分登入計算機。
嘗試安裝公告的套件:
msiexec /i package.msi
在大部分情況下,如果安裝成功,則套件符合UAC規範。
將 封裝中的 MSIDEPLOYMENTCOMPLIANT 屬性設定為 1。
使用 Windows Vista 測試套件的正確安裝。