用於註冊部署的 MSI 包
創建 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 安裝(推薦閱讀,但要謹慎使用 - 禁用文件成本計算可能沒問題,禁用系統還原很危險)。
- 系統還原是一個麻煩的功能。它似乎有時會清除記憶體的 MSI 文件,意外刪除一些文件並恢復已刪除的文件 - 除其他外。
週期性自我修復:如果另一個 MSI 程序包引用相同的系統資料庫項,在某些情況下您可能會遇到**週期性自我修復週期。**大多數管理員至少見過幾次。如果您不知道在哪裡查找,則很難修復。我在stackoverflow上為此寫了一個很長的答案: how to debug cyclical self-repair(推薦系統管理員閱讀)。更多關於自我修復或“自我修復”的資訊:
包乾擾:如果您真的不走運並且編寫了一個可以修復的 MSI - 它被呼叫 - 甚至只是自我修復 - 這會自動發生 - 在某些時候,您可以覆蓋/恢復已被後續更改更改的設置。這種場景通常很難調試。您可以在事件日誌中找到導致問題的包。它甚至指定導致問題的組件,但從那裡開始需要 MSI 專業知識。Stefan Kruger ( MSI MVP )關於這個主題的好文章。
無保證:與上述類似,您看到系統上安裝了 MSI 的事實通常被視為系統已“修補”的證據。MSI 的存在告訴您安裝程序在某一時刻執行,但您對目前的系統資料庫狀態一無所知。
HKCU:正如其他人所提到的,如果您正在編寫的系統資料庫項在 HKCU 下,則只有在安裝 MSI 時有問題的使用者碰巧登錄時才會寫入它們。任何其他使用者都不會更新其系統資料庫。
ActiveSetup可以在這裡提供幫助. ActiveSetup 在很大程度上已被棄用,您可以使用登錄腳本,但不要使用 MSI。這些只是我腦海中的一些問題,我當然忘記了一些。
為系統管理員提供核心 MSI 資訊的其他答案:
- 如何調試週期性自修復(重要課題)
- MSI 的企業利益(可能對經理有用)
- 如何從 setup.exe 中提取文件(值得任何管理員閱讀,可能是舊消息)
- 管理安裝的目的(系統管理員的核心 MSI 操作)
- MSI 包中的常見錯誤(更多針對開發人員,也針對系統管理員)
- 如何加快 MSI 安裝(只有幾個選項)
- 如何使用 ActiveSetup 更新每個使用者配置文件(有點危險,但很有用)