Windows installer 如何从其他产品检查msi上安装的功能

Windows installer 如何从其他产品检查msi上安装的功能,windows-installer,Windows Installer,如果是相同的产品,我们可以使用升级代码进行检查。 但我的情况有点不同。 我有一个msi,如果安装了特定功能,那么我的第二个msi应该只卸载第一个msi该特定功能并安装其功能。 注意:我们只有第一个msi的升级代码 请建议如何做到这一点 下面使用。您也可以通过以下方式执行相同的操作。我猜COM本质上是真正Win32函数之上的包装器 嗯,这听起来很奇怪,但你可以很容易地获得功能及其状态: Set i=Wscript.CreateObject(“WindowsInstaller.Installer”

如果是相同的产品,我们可以使用升级代码进行检查。 但我的情况有点不同。 我有一个msi,如果安装了特定功能,那么我的第二个msi应该只卸载第一个msi该特定功能并安装其功能。 注意:我们只有第一个msi的升级代码

请建议如何做到这一点

下面使用。您也可以通过以下方式执行相同的操作。我猜COM本质上是真正Win32函数之上的包装器


嗯,这听起来很奇怪,但你可以很容易地获得功能及其状态:

Set i=Wscript.CreateObject(“WindowsInstaller.Installer”)
state=i.FeatureState(“{PRODUCT-CODE-GUID-HERE}”,“FeatureName”)
MsgBox状态
功能状态:
3
是正常的本地安装。其余:()

如果需要从升级代码中获取产品代码:

Set installer=CreateObject(“WindowsInstaller.installer”)
Set upgrades=installer.RelatedProducts(“{UPGRADE-CODE-GUID-HERE}”)
对于升级中的每个u
MsgBox u,vbOKOnly,“产品代码:”
下一个
请注意,许多产品可以共享相同的升级代码


要卸载功能的代码段:

Set i=Wscript.CreateObject(“WindowsInstaller.Installer”)
config=i.ConfigureFeature(“{PRODUCT-CODE-GUID-HERE}”,“FeatureName”,2)
要安装功能,值应为
3
(),要卸载
2
()


链接

下面使用。您也可以通过以下方式执行相同的操作。我猜COM本质上是真正Win32函数之上的包装器


嗯,这听起来很奇怪,但你可以很容易地获得功能及其状态:

Set i=Wscript.CreateObject(“WindowsInstaller.Installer”)
state=i.FeatureState(“{PRODUCT-CODE-GUID-HERE}”,“FeatureName”)
MsgBox状态
功能状态:
3
是正常的本地安装。其余:()

如果需要从升级代码中获取产品代码:

Set installer=CreateObject(“WindowsInstaller.installer”)
Set upgrades=installer.RelatedProducts(“{UPGRADE-CODE-GUID-HERE}”)
对于升级中的每个u
MsgBox u,vbOKOnly,“产品代码:”
下一个
请注意,许多产品可以共享相同的升级代码


要卸载功能的代码段:

Set i=Wscript.CreateObject(“WindowsInstaller.Installer”)
config=i.ConfigureFeature(“{PRODUCT-CODE-GUID-HERE}”,“FeatureName”,2)
要安装功能,值应为
3
(),要卸载
2
()


链接


你能详细说明一下你在做什么吗。可能有更好的部署设计。例如,合并模块或类似模块。或者并行部署。有许多选项一开始可能并不明显。我还应该指出,使用这种方法在锁定环境中提升权限可能会有困难,因为您不能同时运行两个InstallExecuteSequence。因此,您必须运行即时模式自定义操作,并且它们不会被提升。您可能希望从
setup.exe执行此操作。我忘记添加的是
launcher。你在用什么微星工具?然后您可以检查系统并按顺序运行每个MSI。记录大规模部署场景的需求,并提供批处理文件、powershell脚本或vbscript来完成此工作?请详细说明您正在做什么。可能有更好的部署设计。例如,合并模块或类似模块。或者并行部署。有许多选项一开始可能并不明显。我还应该指出,使用这种方法在锁定环境中提升权限可能会有困难,因为您不能同时运行两个InstallExecuteSequence。因此,您必须运行即时模式自定义操作,并且它们不会被提升。您可能希望从
setup.exe执行此操作。我忘记添加的是
launcher。你在用什么微星工具?然后您可以检查系统并按顺序运行每个MSI。记录大规模部署场景的需求,并提供批处理文件、powershell脚本或vbscript来完成工作?