使用实例转换安装多个实例

本主题提供有关安装或重新安装使用实例转换的多个实例安装的指南。

  • 使用实例转换安装新实例时,请包含 MSINEWINSTANCE 属性并设置 MSINEWINSTANCE=1。
  • 使用实例转换安装新实例时,请包含 TRANSFORMS 属性,并将转换列表中的第一个转换设置为更改产品代码的实例转换。 任何自定义转换都应遵循此列表开头的实例转换。
  • 启动维护安装并重新安装实例的最简单方法是引用实例的产品代码。 如果使用包路径启动维护安装,则还必须指定实例的产品代码。 在命令行中,使用 /n {Product Code} 选项。 在代码或脚本中,使用 MSIINSTANCEGUID 属性。

以下示例演示如何从命令行安装新实例,其中实例转换以冒号为前缀,指定在包中嵌入转换。

msiexec /I mypackage.msi TRANSFORMS=:instance.mst MSINEWINSTANCE=1 /qb

以下示例演示如何使用 MsiInstallProduct 安装新实例。

UINT uiStat = MsiInstallProduct(_T("path to mypackage.msi"), _T("TRANSFORMS=:instance.mst MSINEWINSTANCE=1"));

以下示例演示如何从脚本安装新实例。

Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.InstallProduct "path to mypackage.msi", "TRANSFORMS=:instance.mst MSINEWINSTANCE=1"

以下示例重新安装实例而不重新缓存包。 实例由其产品代码 {00000001-0002-0000-0000-624474736554} 引用。

msiexec /I {00000001-0002-0000-0000-624474736554} REINSTALL=ALL REINSTALLMODE=omus /qb

以下示例重新安装实例,并从命令行重新缓存包。 实例由包路径引用。 仅当产品最初随实例转换一起安装时,才需要包含 /n {Product Code} 选项。

msiexec /I c:\newpath\mypackage.msi /n {00000001-0002-0000-0000-624474736554} REINSTALL=ALL REINSTALLMODE=vomus /qb

以下示例使用 MsiInstallProduct 重新安装实例并缓存包。 实例由包路径引用。 使用 MSIINSTANCEGUID 属性提供实例的产品代码。

UINT uiStat = MsiInstallProduct(_T("path to mypackage.msi"), _T("MSIINSTANCEGUID={00000001-0002-0000-0000-624474736554}  REINSTALL=ALL REINSTALLMODE=vomus"));

以下示例使用脚本重新安装实例并缓存包。 使用 MSIINSTANCEGUID 属性提供实例的产品代码。

Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.InstallProduct "path to mypackage.msi", "MSIINSTANCEGUID={00000001-0002-0000-0000-624474736554}  REINSTALL=ALL REINSTALLMODE=vomus"

以下示例演示如何使用命令行播发实例。

msiexec /jm mypackage.msi /t :instance.mst /c /qb

以下示例演示如何使用 MsiAdvertiseProductEx 安装以播发实例。

UINT uiStat = MsiAdvertiseProductEx(_T("path to mypackage.msi"), NULL, _T(":instance.mst"), 0, 0, MSIADVERTISEOPTIONS_INSTANCE);

以下示例演示如何从命令行将修补程序应用于实例。 仅当产品最初随实例转换一起安装时,才需要包含 /n {Product Code} 选项。

msiexec /p mypatch.msp /n {00000001-0002-0000-0000-624474736554} /qb

以下示例演示如何使用 MsiApplyPatch 将修补程序应用于实例安装。

UINT uiStat = MsiApplyPatch(_T("path to mypatch.msp"), _T("{00000001-0002-0000-0000-624474736554}"), INSTALLTYPE_SINGLE_INSTANCE, _T("REINSTALL=ALL REINSTALLMODE=omus"));

有关详细信息,请参阅安装产品和修补程序的多个实例使用实例转换创作多个实例