是否可以从InstallShield Express自定义操作运行MSI?

时间:2021-09-02 22:40:19

I am using InstallShield Express Spring 2012 SP1. I would like to run the SQLLocalDb_x64.MSI from a custom action.

我正在使用InstallShield Express Spring 2012 SP1。我想从自定义操作中运行SQLLocalDb_x64.MSI。

Is it possible to run an MSI from a custom action in InstallShield Express?

是否可以从InstallShield Express中的自定义操作运行MSI?

2 个解决方案

#1


1  

As a general rule, you cannot run an MSI as a custom action on Install Execute Sequence in another main MSI package. Windows Installer does not allow two MSI packages to run at the same time, so you will get an error message.

作为一般规则,您不能将MSI作为另一个主MSI包中的Install Execute Sequence的自定义操作运行。 Windows Installer不允许同时运行两个MSI程序包,因此您将收到错误消息。

The standard approach for launching an MSI conditionally from another MSI is to embed it as a chained package.

从另一个MSI有条件地启动MSI的标准方法是将其嵌入到链式包中。

Unfortunately I don't use InstallShield Express, so I don't know if it supports chained packages, usually this feature is available in a commercial edition.

不幸的是我不使用InstallShield Express,因此我不知道它是否支持链式软件包,通常这个功能在商业版中可用。

#2


1  

I am fully agree with Bogdan, but there is one trick. You can run msi from custom action at the end of your installation after InstallFinalize phase. You could use the following CA:
InstallIntStd 226 SystemFolder msiexec.exe /passive /i "[SOURCEDIR]YourSetup.msi"
Where:
InstallIntStd name of custom action;
226 Type: An asynchronous execution of EXE without waiting result;
SystemFolder Directory where msiexec located;
msiexec.exe /passive /i "[SOURCEDIR]YourSetup.msi" Launch string.

我完全赞同波格丹,但有一招。您可以在InstallFinalize阶段之后的安装结束时从自定义操作运行msi。您可以使用以下CA:InstallIntStd 226 SystemFolder msiexec.exe / passive / i“[SOURCEDIR] YourSetup.msi”其中:InstallIntStd自定义操作的名称; 226类型:EXE的异步执行,无需等待结果; SystemFolder msiexec所在的目录; msiexec.exe / passive / i“[SOURCEDIR] YourSetup.msi”启动字符串。

#1


1  

As a general rule, you cannot run an MSI as a custom action on Install Execute Sequence in another main MSI package. Windows Installer does not allow two MSI packages to run at the same time, so you will get an error message.

作为一般规则,您不能将MSI作为另一个主MSI包中的Install Execute Sequence的自定义操作运行。 Windows Installer不允许同时运行两个MSI程序包,因此您将收到错误消息。

The standard approach for launching an MSI conditionally from another MSI is to embed it as a chained package.

从另一个MSI有条件地启动MSI的标准方法是将其嵌入到链式包中。

Unfortunately I don't use InstallShield Express, so I don't know if it supports chained packages, usually this feature is available in a commercial edition.

不幸的是我不使用InstallShield Express,因此我不知道它是否支持链式软件包,通常这个功能在商业版中可用。

#2


1  

I am fully agree with Bogdan, but there is one trick. You can run msi from custom action at the end of your installation after InstallFinalize phase. You could use the following CA:
InstallIntStd 226 SystemFolder msiexec.exe /passive /i "[SOURCEDIR]YourSetup.msi"
Where:
InstallIntStd name of custom action;
226 Type: An asynchronous execution of EXE without waiting result;
SystemFolder Directory where msiexec located;
msiexec.exe /passive /i "[SOURCEDIR]YourSetup.msi" Launch string.

我完全赞同波格丹,但有一招。您可以在InstallFinalize阶段之后的安装结束时从自定义操作运行msi。您可以使用以下CA:InstallIntStd 226 SystemFolder msiexec.exe / passive / i“[SOURCEDIR] YourSetup.msi”其中:InstallIntStd自定义操作的名称; 226类型:EXE的异步执行,无需等待结果; SystemFolder msiexec所在的目录; msiexec.exe / passive / i“[SOURCEDIR] YourSetup.msi”启动字符串。