簡體   English   中英

Powershell 靜默安裝問題

[英]Powershell silent installation issue

如果我們嘗試使用已安裝在服務器中的 powershell 安裝軟件會發生什么。 例如,我的服務器中已經有 notepad++,現在我嘗試使用 powershell 在我的服務器中安裝相同的 notepad++ 版本。 那么輸出會是什么? 另外,有沒有什么辦法可以查到某個軟件是否已經安裝在服務器上。

安裝程序有很多種,但大多數都在程序的添加/刪除列表中添加記錄,但不能保證。 這是用於掃描注冊表並通過 WMI 檢查的 C++ 代碼 當然,您可以使用腳本代替,但找到安裝的內容並不是一門精確的科學 - 一些安裝程序是非常自定義的和非標准的,並且遵循很少的指導方針。

注冊表項

  • HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall
  • HKLM\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall

微星配套

對於 MSI 軟件包,有多種方法可以檢查是否安裝了完全相同的版本或相關版本。 如果您有MSI的產品代碼,您可以簡單地檢查它是否安裝如下:

Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
MsgBox installer.ProductState("{00000000-0000-0000-0000-000000000001}") ' <= PRODUCT CODE

更長的示例鏈接在這里

您可以使用多種方法找到已安裝 MSI 的產品代碼: 如何找到已安裝 MSI 設置的產品 G​​UID?

如果您有一系列 MSI 的升級代碼,您可以使用 RelatedProducts 方法來確定是否安裝了相關產品:

Set installer = CreateObject("WindowsInstaller.Installer")
Set upgrades = installer.RelatedProducts("{UPGRADE-CODE-GUID-HERE}")

For Each u In upgrades
   MsgBox u, vbOKOnly, "Product Code: "
Next

如何找到已安裝 MSI 文件的升級代碼? . 您可以通過使用 Orca 查看屬性表來獲取要安裝的 MSI 的升級代碼。

務實的方法

一種選擇是從每個安裝中識別一個密鑰文件,並使用您想要的任何語言檢查其是否存在 - 腳本即可。

Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetFileVersion("C:\Windows\System32\vcruntime140.dll")

上面的腳本片段來自這個關於如何找到已安裝的 VCRedist 版本的咆哮


鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM