Share via


搭配重新開機管理員使用 Windows Installer

使用 Windows Installer 4.0 在 Windows Vista 上安裝和維護的應用程式會自動使用 重新開機管理員 來減少系統重新開機。 Windows Vista 的預設行為是關閉應用程式,而不是盡可能關閉並重新啟動作業系統。 如果系統重新開機無法避免,安裝程式可以使用 重新開機管理員 API 來排程重新開機,如此一來,安裝程式就會將使用者工作流程的中斷降到最低。

Windows Installer 開發人員可以執行下列動作,以準備其套件以使用 重新開機管理員

  • MsiRMFilesInUse 對話方塊新增至您的套件。 如果套件中有 MsiRMFilesInUse 對話方塊,則會提供在 [完整 UI 使用者介面] 層級 執行安裝的 Windows Vista 使用者,可以選擇自動關閉並重新啟動應用程式。 安裝套件可以包含 MsiRMFilesInUse 對話方塊和 FilesInUse 對話方塊的資訊。 只有在 Windows Vista 上安裝至少具有 Windows Installer 4.0 的套件時,才會顯示 MsiRMFilesInUse 對話方塊,否則會予以忽略。 沒有 MsiRMFilesInUse 對話方塊的現有套件會繼續使用 [FilesInUse] 對話方塊運作。 自訂轉換可用來將 MsiRMFilesInUse 對話方塊新增至現有的套件。

    終端使用者通常會在完整 UI 使用者介面層級執行安裝。 基本 UI 或降低 UI 層級安裝可讓使用者選擇使用 [重新開機管理員 ] 來減少系統重新開機,即使 MsiRMFilesInUse 對話方塊不存在也一樣。 無訊息 UI 層級安裝一律會關閉應用程式和服務,並在 Windows Vista 上使用重新開機管理員。

  • 使用 RegisterApplicationRestart 函式註冊應用程式以進行重新開機。 重新開機管理員只能重新開機已註冊重新開機的應用程式。 重新開機管理員會在安裝之後重新開機已註冊的應用程式。 如果安裝需要重新開機系統,重新開機管理員會在系統重新開機之後重新開機已註冊的應用程式。

  • 使用MsiSetExternalUI 和 MsiSetExternalUIRecord函式啟用外部使用者介面處理常式時,請指定INSTALLLOGMODE_RMFILESINUSE。 Windows Installer 會針對支援 重新開機管理員的外部使用者介面處理常式傳送INSTALLMESSAGE_RMFILESINUSE訊息。 如果沒有已註冊或內部使用者介面處理INSTALLMESSAGE_RMFILESINUSE訊息,安裝程式會針對支援 FilesInUse 對話方塊的使用者介面處理常式傳送INSTALLMESSAGE_FILESINUSE訊息。 如需詳細資訊,請參閱 搭配外部 UI 使用重新開機管理員

  • 自訂動作可以新增屬於 重新開機管理員 會話的資源。 自訂動作應該在 InstallValidate 動作之前排序。 自訂動作可以使用 MsiRestartManagerSessionKey 屬性來取得工作階段金鑰,而且應該呼叫 Restart Manager API 的 RmJoinSessionRmEndSession 函式。 自訂動作無法移除屬於重新開機管理員會話的資源。 自訂動作不應該嘗試使用 RmShutdownRmGetListRmRestart 函式來關閉或重新開機應用程式。

  • 套件作者可以在MsiSystemRebootPending屬性的LaunchCondition 資料表中建立條件,以防止在系統重新開機擱置時安裝其套件。

  • 套件作者和系統管理員可以使用 MSIRESTARTMANAGERCONTROLMSIDISABLERMRESTARTMSIRMSHUTDOWN 屬性和 DisableAutomaticApplicationShutdown 原則來控制 Windows Installer 和重新開機管理員的互動。

  • 應用程式和服務應遵循重新開機管理員檔的使用重新開機管理員一節中所述的指導方針。