簡體   English   中英

MSI從注冊表獲取安裝參數

[英]MSI get install arguments from registry

我們實際上是在編寫PowerShell cmdlet來創建已安裝(自定義)MSI的快照。 cmdlet遍歷服務器列表,檢查是否安裝了給定發布者的MSI。 如果是這樣,則將MSI從遠程計算機復制到執行PowerShell cmdlet的主機。 到現在為止還挺好。 在下一階段,我們計划使用預先獲取的MSI軟件包還原系統。

我們的實際問題:一些MSI需要命令行參數才能通過msiexec安裝。 如果參數存儲在某個地方,我們搜索了Windows注冊表,但找不到它們。 我們檢查了以下路徑:

 HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\*\InstallProperties
 HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
 HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*

有人知道通過msiexec安裝MSI時,安裝參數是否在Windows上持久存在嗎?

通過以下方式安裝MSI軟件包:

  msiexec /i somePackage.msi /qn /norestart Arg1=1 Arg2=someTest Arg3=true

謝謝

遺憾的是,Windows Installer屬性沒有保留。 每個MSI作者都要決定他要如何保存/檢索(很多人不知道他們需要)屬性,以便在后續事務中可用。

安裝字符串 :正如Chris所說,Windows Installer遺漏了安裝程序中的屬性-我也認為。 我已經實現了一些自定義功能,以使這種持久性能夠解決公司部署的局限性。

卸載字符串 :盡管注冊表中沒有安裝字符串/安裝命令行(據我所知), 但仍有寫入注冊表的卸載字符串,如此處所述

轉換 :我想補充一點,如果在安裝過程中應用了轉換,那么您可以通過MSI API獲得這些轉換的路徑。 應用的轉換可以對正在安裝的MSI進行重大更改,並且與僅設置PUBLIC PROPERTIES相比,它是定制部署的重量級方法。 此處提供更多信息: 如何更好地利用MSI文件 (“轉換”部分)。

要檢索包裝盒上應用於您的MSI軟件包的轉換列表(可能沒有-大多數公司都使用轉換進行部署),請嘗試使用訪問MSI COM API的VBScript獲取信息(而不是直接從MSI COM API讀取)注冊表-效果不佳,因為原始值可能會受到未在注冊表中以明文顯示的實現細節的影響。

要運行該腳本,請將其復制/粘貼到桌面上的*.vbs文件中,然后雙擊運行。 輸出到msiinfo.csv Excel電子表格應用程序記事本中打開:

Set fso = CreateObject("Scripting.FileSystemObject")
Set output = fso.CreateTextFile("msiinfo.csv", True, True)
Set installer = CreateObject("WindowsInstaller.Installer")

On Error Resume Next ' we ignore all errors

' Write headers
output.writeline ("ProductCode" & ", " & "ProductName" & ", " & "Version" & ", " & "Transforms")

For Each product In installer.ProductsEx("", "", 7)
   productcode = product.ProductCode
   name = product.InstallProperty("ProductName")
   version=product.InstallProperty("VersionString")
   transforms= product.InstallProperty("Transforms")
   output.writeline (productcode & ", " & name & ", " & version & ", " & transforms)
Next

output.Close

暫無
暫無

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

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