使用 Windows Installer 和 Windows 資源保護

在 Windows Server 2008 和更新版本和 Windows Vista 和更新版本中安裝基本系統檔案、資料夾和登錄資訊時,Windows Installer 遵守 Windows Resource Protection (WRP) 。

Windows Server 2008 和 Windows Vista 中的 WRP 會取代 Windows 檔案保護 (WINDOWS Server 2003、Windows XP 和 Windows 2000 中的) 。 Windows Installer 開發人員應該注意下列變更:安裝程式如何處理 Windows Server 2008 和更新版本中受保護的資源,以及 Windows Vista 和更新版本:

  • 在 Windows Server 2008 和更新版本或 Windows Vista 及更新版本上執行時,Windows Installer 會略過任何受 WRP 保護的檔案安裝,安裝程式會在記錄檔中輸入警告,並繼續安裝其餘部分,而不會發生錯誤。 在 Windows Server 2003、Windows XP 和 Windows 2000 中,當 Windows Installer 遇到一個受一般保護的檔案時,安裝程式會要求一併安裝此檔案。
  • Windows Server 2008 和更新版本上的 WRP 或 Windows Vista 和更新版本除了檔案之外,還可以保護登錄機碼。 如果 Windows Installer 遇到受 WRP 保護的登錄機碼,安裝程式會略過該登錄機碼的安裝,安裝程式會在記錄檔中輸入警告,並繼續安裝其餘部分,而不會發生錯誤。
  • 請注意,如果 Windows Installer 元件包含受 WRP 保護的檔案或登錄機碼,則必須將此資源當做元件的 KeyPath 使用。 在此情況下,Windows Installer 不會安裝、更新或移除元件。 您不應該在安裝套件中包含任何受保護的資源。 相反地,您應該使用Windows 資源保護支援的資源取代機制

如需 WRP 的詳細資訊,請參閱 Windows 資源保護和Microsoft Technet上提供的資訊。

適用于 Windows Server 2003 和 Windows XP/2000 的其版本

在 Windows Server 2003、Windows XP 和 Windows 2000 上安裝基本系統檔案時,Windows Installer 會遵守 WINDOWS 檔案保護 (一般) 。 如果應用程式的自動安裝修改受保護的系統檔案,則此檔案會還原至已驗證的檔案版本。

Windows Installer 永遠不會嘗試安裝或取代受保護的檔案。 當 InstallFiles 動作或任何其他排程的動作在 InstallFiles 嘗試在 Windows Server 2003、Windows XP 或 Windows 2000 上安裝受保護的檔案時,安裝程式會要求安裝或取代受保護的檔案。 安裝程式在執行 InstallFiles 動作之後,會立即向其要求檔案安裝。 其會以受保護檔案的快取版本,安裝或取代使用者系統上的檔案。 請注意,這不保證從快取安裝的檔案版本是應用程式所需的版本。 安裝檔案之後,安裝程式會判斷此版本是否符合套件中的版本。 如果套件中的檔案版本大於已安裝的版本,安裝程式會通知使用者它無法更新系統,而且可能需要更新應用程式的作業系統。

如果在 InstallFiles 嘗試安裝或取代尚未安裝在系統上的受保護檔案之後排序的任何動作,安裝程式就無法呼叫一個的一個檔案來安裝檔案。 在此情況下,安裝程式會通知使用者它無法更新系統,而且可能需要更新應用程式的作業系統。

安裝程式也會在移除檔案時檢查一次,且永遠不會嘗試移除受保護的系統檔案。

受其保護的元件金鑰檔案

請注意,如果 Windows Installer 元件包含一個有一個的一個一般檔案,則必須將此檔案指定為元件的索引鍵路徑。

當安裝程式嘗試在 Windows Server 2003、Windows XP 或 Windows 2000 上安裝元件的金鑰檔時,它會先呼叫一個的一個,以判斷金鑰檔是否受到保護。 當元件的金鑰檔案受到一個元件保護,而且已安裝該金鑰檔案時,只有當套件中的金鑰檔案版本大於已安裝的版本時,安裝程式才會更新元件。 如果安裝套件指定安裝元件,而且目前未安裝元件的金鑰檔,則不論金鑰檔是否受到保護,安裝程式都會安裝元件。 一旦安裝任何元件有受一個受其保護的金鑰檔案,它就會永久安裝,而且安裝程式永遠不會移除或取代元件。

依一開始的元件安裝

元件的其與系統檔案的一般專案不同。

在偵測取代受保護系統檔案的嘗試時,一般會偵測 WINDOWS Server 2003、Windows XP 和 Windows 2000 系統檔案的嘗試,以保護 Windows Server 2003、 Windows XP 和 Windows 2000 系統檔案。 在一個受保護目錄中的檔案收到目錄變更通知之後,就會觸發此保護。 當其收到此通知時,它會判斷哪個檔案已變更。 如果檔案受到保護,則一般會查詢靜態類別目錄檔案中的檔案簽章,以判斷新檔案是否為正確的版本。 如果檔案版本不正確,系統會使用來自快取或散發媒體的正確版本來取代檔案。

相較之下,元件的一個方案是動態的。 在檔案新增至共用並存組件快取時,會將其擴充至檔案。 如果元件損毀,則一般會要求安裝程式取代檔案。 視來源套件是否可存取而定,Windows Installer 可能無法取代檔案。 如果無法存取來源套件,則一個對話方塊會指出無法還原檔案。

請注意,安裝在 %windir%\winsxs 中的 Unmanaged 共用並存元件會受到其保護。 安裝在應用程式目錄中的 Unmanaged 私用元件不會受到其保護。 安裝于應用程式目錄或 %windir%\assembly\gac 中的 Managed 通用群組件不會受到其保護。

Windows 資源保護