Sccm

使用 System Center Configuration Manager 2012 刪除現有的 InstallShield App

  • July 28, 2015

我正在嘗試使用 System Center Configuration Manager 2012 來升級我們大多數電腦上安裝的現有程序。該程序使用 InstallShield 安裝程序。我們是這裡的 SCCM 新手,早在我們提供 SCCM 之前,這個程序就已經存在了。

新版本的程序和安裝程序沒有內置任何東西可以用來檢測或刪除舊版本。如果您只是執行新的安裝程序而不刪除舊版本的程序,一段時間看起來還不錯,但最終您會開始發現不正確的地方。供應商建議在安裝新版本之前手動刪除舊版本。

我已經可以使用 SCCM 將新版本部署到干淨的工作站。但是,我目前無法成功刪除舊版本。

經過大量研究後,我已經為InstallShield 記錄了一個應答文件。我使用虛擬 MSI 文件為舊程序創建安裝模板。然後我在 SCCM 中編輯了檢測屬性,以準確找到舊程序。我將安裝程序更改為剛剛退出的虛擬命令,並在 Windows 系統資料庫中查找該程序的解除安裝命令。

此時,如果我為這個虛擬應用程序從 SCCM 創建解除安裝部署,它將正確檢測程序是否已安裝。我的工作站上的軟體中心會顯示它是否已安裝,並且 SCCM 中顯示的完成百分比是準確的。我還可以讓解除安裝程序執行任意腳本,*只要整個腳本適合該Uninstall program:應用程序的 SCCM 部署類型的“程序”選項卡上的欄位。*我只需要用cmd /d /c"command goes here".

如果我將程序的解除安裝命令編輯為不需要任何引號並將其放在該命令語法中,我可以通過 Process Explorer 看到解除安裝程序確實啟動了,但它隱藏在本地系統帳戶的私有桌面上,它將等待永遠不會出現的輸入。看來我需要告訴它答案文件才能完成安裝。然而,這帶來了兩個問題。

第一個問題是如果不使用cmd /d /c"..."語法,我根本看不到解除安裝程序啟動,但如果我使用語法,我不能包含答案文件,因為它必須用引號括起來。我無法看到在解除安裝程序中轉義引號:我需要使用的欄位。

即使我解決了這個問題,現在我也需要知道如何將答案文件推送到各個系統。據我所見,我不能為此使用網路共享,因為解除安裝程序將作為本地系統帳戶執行,該帳戶沒有任何網路資源的權限。如果我可以將隨機文件推送到電腦,我還可以推送更複雜的解除安裝腳本……但這也會留下我仍然需要一種方法來刪除的工件。

我已經在這上面花費了太多時間,而且似乎遇到了一堵磚牆。InstallShield 和 SCCM 都被廣泛使用。肯定沒這麼難吧?我錯過了什麼?

我還可以讓解除安裝程序執行任意腳本,只要整個腳本適合該應用程序的 SCCM 部署類型的程序選項卡上的解除安裝程序:欄位。我只需要用類似 cmd /d /c"command going here" 之類的東西將命令括起來。

我已經標準化了批處理文件來託管執行(解除安裝)安裝的命令。因此“安裝程序”欄位顯示為Install-Application.bat. 這允許我通過簡單地執行批處理文件來測試完全獨立於 SCCM 的(解除安裝)安裝過程。然後,當它工作時,我可以使用 SCCM 執行該批處理文件,並確信它將以與我已經測試過的方式相同的方式執行(假設您在與 SCCM 使用的相同上下文中進行測試)。批處理文件與構成該應用程序內容的其他文件一起分發。

現在我需要知道如何將答案文件推送到各個系統。據我所見,我不能為此使用網路共享,因為解除安裝程序將作為本地系統帳戶執行,該帳戶沒有任何網路資源的權限。如果我可以將隨機文件推送到電腦,我還可以推送更複雜的解除安裝腳本……但這也會留下我仍然需要一種方法來刪除的工件。

SCCM 會為您處理內容分發(包括記憶體和清理)。它在這方面做得很好。我認為您可能缺少 SCCM 應用程序的內容和分發的概念。SCCM 將處理將您放在“內容位置”欄位中的任何 UNC 文件夾的內容分發給所有需要它的客戶端。我發現它可以可靠且自動地工作。我的內容文件夾通常包括批處理文件、安裝程序、powershell 腳本、XML 文件、.msp 文件以及無人值守安裝過程的任何其他陷阱。

肯定沒這麼難吧?我錯過了什麼?

這很難。或者至少經常如此。值得一提的是,SCCM 對軟體的安裝和解除安裝沒有幫助。SCCM 實際上只處理軟體分發(並且做得相當好)。SCCM 完全依賴預建構的安裝程序和解除安裝程序來執行這些任務。如果您還沒有按您希望的方式執行的(解除安裝)安裝程序,SCCM 將無法幫助您。疼痛通常是由以下某些組合引起的(對於我看到的大約 60% 的安裝人員):

  • (取消)安裝程序,當您真的希望它們無人值守執行時需要使用者互動(對於本機應用程序來說,AFAIK 沒有一種簡單的方法可以克服)
  • (un) 為單個使用者安裝但需要提升權限的安裝程序(AFAIK 沒有一種實用的自動化方法)
  • (un) 聲稱為單個使用者安裝但實際上為系統安裝的安裝程序,反之亦然

App-V 可以解決其中一些問題(但這不會幫助您解除安裝現有的本機應用程序)。然而,據我所知,有些應用程序的安裝和解除安裝無法可靠地自動化。

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