Windows-Registry

用於註冊部署的 MSI 包

  • April 24, 2020

創建 MSI 包以通過網路部署系統資料庫項的最佳方法是什麼,而不是使用 GPO。

有許多用於建構 MSI 的工具。我更喜歡Advanced Installer,它作為免費軟體版本提供。Advanced Installer 允許您手動輸入系統資料庫項/值,或從文件或實時系統資料庫中導入它們。使用起來非常簡單。

或者,如果您不需要MSI,您可以使用 Windows 實用程序從命令行輕鬆操作系統資料庫reg.exe。這可以使用諸如psexec.

我不會使用 MSI 來部署系統資料庫設置。指向系統設置的 MSI 是“鬆散的大砲”。MSI 認為它“擁有”密鑰並將觸發愉快的移除或恢復它。以下是一些細節:

  • 意外解除安裝:如果您錯誤地編寫 MSI,則寫入設置的組件將不會被標記為永久,並且如果曾經解除安裝 MSI,它將撕掉整個系統資料庫鍵/值。請注意,如果您升級 MSI,則主要升級可能會或可能不會在安裝新版本之前執行完全解除安裝(取決於更新的配置方式)。如果重新安裝失敗,則您的系統資料庫項失去。

  • 組策略:工作站上的某些系統資料庫項會定期(每 90 分鐘左右)被域控制器命令覆蓋 - 因此它們可能會在安裝 MSI 後恢復。這裡有一些進一步的細節

  • 添加/刪除程序 (ARP):此外,這些 MSI 文件顯示在系統上的添加/刪除小程序中,使用者可以在其中看到它們並可能解除安裝它們。您可以通過將ARPSYSTEMCOMPONENT屬性設置為 1來隱藏此視圖中的 MSI。但這只會阻止添加/刪除中的顯示。MSI 仍然可以從命令行或通過腳本自動化或遠端管理工具解除安裝。

  • Cleanup Mania:即使您的 MSI 隱藏在 ARP 中,如果您使用的是 SCCM、Altiris、Unicenter、Tivoli 或類似的部署工具,具有cleanup-mania的****勤奮管理員可能會決定解除安裝這些“黑客包”並造成嚴重破壞如果 MSI 擦除所需的設置。請記住,MSI 文件通常也會執行提升(臨時管理員權限),因此如果一開始就沒有好處,它們肯定是武裝和危險的。

  • 系統還原:安裝 MSI 將觸發在 PC 上創建還原點(除非禁用系統還原)。如果您只是編寫幾個值,這可能會很耗時並且似乎過多。

  • 週期性自我修復:如果另一個 MSI 程序包引用相同的系統資料庫項,在某些情況下您可能會遇到**週期性自我修復週期。**大多數管理員至少見過幾次。如果您不知道在哪裡查找,則很難修復。我在stackoverflow上為此寫了一個很長的答案: how to debug cyclical self-repair(推薦系統管理員閱讀)。更多關於自我修復或“自我修復”的資訊:

  • 包乾擾:如果您真的不走運並且編寫了一個可以修復的 MSI - 它被呼叫 - 甚至只是自我修復 - 這會自動發生 - 在某些時候,您可以覆蓋/恢復已被後續更改更改的設置。這種場景通常很難調試。您可以在事件日誌中找到導致問題的包。它甚至指定導致問題的組件,但從那裡開始需要 MSI 專業知識。Stefan Kruger ( MSI MVP )關於這個主題的好文章。

  • 無保證:與上述類似,您看到系統上安裝了 MSI 的事實通常被視為系統已“修補”的證據。MSI 的存在告訴您安裝程序在某一時刻執行,但您對目前的系統資料庫狀態一無所知。

  • HKCU:正如其他人所提到的,如果您正在編寫的系統資料庫項在 HKCU 下,則只有在安裝 MSI 時有問題的使用者碰巧登錄時才會寫入它們。任何其他使用者都不會更新其系統資料庫。ActiveSetup可以在這裡提供幫助. ActiveSetup 在很大程度上已被棄用,您可以使用登錄腳本,但不要使用 MSI。

這些只是我腦海中的一些問題,我當然忘記了一些。

為系統管理員提供核心 MSI 資訊的其他答案:

引用自:https://serverfault.com/questions/259585