cod*_*ver 37 installer automation windows-installer wix msiexec
我的机器上安装了一个应用程序.我也有它的源代码,但不知何故,此应用程序的ProductCode和UpgradeCode已更改.
现在我想获得这个已安装应用程序的UpgradeCode和ProductCode.我觉得必须有一些工具.
谁能告诉我如何获得已安装应用程序的UpgradeCode和ProductCode?
Yan*_*nko 66
重要提示:自从这个答案最初发布以来已经有一段时间了,聪明人提出了更明智的答案.检查如何找到已安装的MSI文件的升级代码?来自@SteinÅsmul,如果你需要一个坚实而全面的方法.
这是另一种方式(你不需要任何工具):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall密钥(如果它是64位计算机上的32位安装程序,则可能在其下HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall).您停止使用的GUID是ProductCode.
现在,如果您确定重新安装此应用程序可以正常运行,则可以运行以下命令行:
msiexec/i {PRODUCT-CODE-GUID-HERE}重新安装=所有重新安装模式= omus/l*v log.txt
这将"修复"您的应用程序.现在查看日志文件并搜索"UpgradeCode".这个值被转储到那里.
注意:只有在确定正确实施重新安装流程并且这不会破坏已安装的应用程序时,才应执行此操作.
mat*_*kie 18
返回结果需要一些时间,很快就需要几十秒,但是wmic运行良好且可以编写脚本:
wmic product where "Name like '%Word%'" get Name, Version, IdentifyingNumber
Run Code Online (Sandbox Code Playgroud)
结果:
IdentifyingNumber Name Version
{90140000-001B-0409-0000-0000000FF1CE} Microsoft Office Word MUI (English) 2010 14.0.6029.1000
Run Code Online (Sandbox Code Playgroud)
这IdentifingNumber是ProductCode.我没有看到UpgradeCode的属性,但也许它可能被埋没在其他东西之下.有关其他许多示例,请参阅http://quux.wiki.zoho.com/WMIC-Snippets.html,包括卸载:
wmic path win32_product where "name = 'HP Software Update'" call Uninstall
Run Code Online (Sandbox Code Playgroud)
xBr*_*k3n 10
给每个人使用:
Get-WMIObject win32_product
Run Code Online (Sandbox Code Playgroud)
您应该知道,这将在PC上安装的每个MSI应用程序上进行自我修复.如果您要检查eventvwr,它会说已完成重新配置每个产品.
在这种情况下,我使用以下(Yan Sklyarenko方法的混合物):
$Reg = @( "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" )
$InstalledApps = Get-ItemProperty $Reg -EA 0
$WantedApp = $InstalledApps | Where { $_.DisplayName -like "*<part of product>*" }
Run Code Online (Sandbox Code Playgroud)
现在,如果你输入:
$WantedApp.PSChildName
Run Code Online (Sandbox Code Playgroud)
您将获得以下内容:
PS D:\SCCM> $WantedApp.PSChildName
{047904BA-C065-40D5-969A-C7D91CA93D62}
Run Code Online (Sandbox Code Playgroud)
如果您的组织在安装应用程序时使用了大量的MST,那么您可能希望避免运行自我修复包含它们还原一些关键设置.
小智 8
如果您有msi安装程序使用Orca(Microsoft的工具),表属性(行UpgradeCode,ProductCode,产品版本等)或表升级列升级代码打开它.
尝试通过注册表找到instller:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall查找所需的子项并观察值InstallSource.也许你将能够找到MSI文件.
Powershell可以很方便地处理这样的任务:
$productCode = (gwmi win32_product | `
? { $_.Name -Like "<PRODUCT NAME HERE>*" } | `
% { $_.IdentifyingNumber } | `
Select-Object -First 1)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用它来获取卸载信息:
$wow = ""
$is32BitInstaller = $True # or $False
if($is32BitInstaller -and [System.Environment]::Is64BitOperatingSystem)
{
$wow = "\Wow6432Node"
}
$regPath = "HKEY_LOCAL_MACHINE\SOFTWARE$wow\Microsoft\Windows\CurrentVersion\Uninstall"
dir "HKLM:\SOFTWARE$wow\Microsoft\Windows\CurrentVersion\Uninstall" | `
? { $_.Name -Like "$regPath\$productCode" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139884 次 |
| 最近记录: |