MSI错误1500:InstallShield Premium无法运行辅助嵌入式安装EXE

时间:2016-03-08 20:32:51

标签: installation windows-installer installshield-2012

我使用InstallShield Premium 2012为我自己的Windows EXE编写了一个安装脚本。但是,我的EXE最终依赖于名为AccessDatabaseEngine.exe的Microsoft EXE提供的状态组件。

为了使用我的安装运行此AccessDatabaseEngine.exe可执行文件,我将其添加为嵌入式二进制资源,然后使用自定义操作向导将AccessDatabaseEngine.exe作为“在系统上下文中延迟执行”启动为“After PublishFeatures”安装执行顺序。这按预期工作:AccessDatabaseEngine.exe在我的安装程序完成其大部分工作后启动。

但是,一旦我看到AccessDatabaseEngine.exe的UI并确认其UI提示,我就会看到“错误1500”,其中指出正在进行另一个安装。

据我所知,除非您调整注册表以允许它,否则两个MSI软件包无法同时运行,我不想在客户的工作站(Windows 7 32位计算机)上执行此操作。

我想成功实施以下选项之一:

选项一:让用户启动我的Setup.exe程序,该程序将在某些时候启动Microsoft AccessDatabaseEngine.exe而不会生成任何错误消息。我只是不知道怎么做而不会导致错误1500出现......

选项二:如果可以以某种方式将我的Setup.exe与Microsoft的AccessDatabaseEngine.exe一起包装到单个EXE中,那么我可以为我的最终用户提供该单个EXE,它将首先执行嵌入式Setup.exe,一旦完成,它将执行AccessDatabaseEngine.exe。

我意识到我可以将OPTION TWO实现为.bat(批处理)文件,但是我想只向我的最终用户提供一个EXE,并让那个单独的EXE安装我的软件正常运行所需的一切。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您在此处描述的正是InstallShield的先决条件的设计目标。从“工具”菜单启动先决条件编辑器,然后添加文件,命令行和条件,以承载,安装和检测AccessDatabaseEngine.exe的已安装封装;然后使用redistributables视图在项目中包含新的先决条件。

一旦您正确完成此操作,InstallShield的安装启动程序将检查先决条件是否存在,如果不存在,它将按照描述运行先决条件。由于这是在启动主.msi文件之前完成的,因此避免同时安装两个.msi文件。

有关详细信息,请参阅帮助中的Defining InstallShield PrerequisitesCreating an InstallShield PrerequisiteSetting Installation Conditions for an InstallShield Prerequisite。要定义最终在构建的安装程序中的位置,请参阅Specifying the Run-Time Location for InstallShield Prerequisites at the Release LevelSpecifying a Run-Time Location for a Specific InstallShield Prerequisite。请注意,当添加先决条件的依赖项时,它们通常使用发布级别设置,因此除非您确实需要混合使用位置,否则最好在发布中指定此内容。

答案 1 :(得分:0)

显然有两个设置可以确定先决条件是否在其自己的单独文件夹(包含setup.exe的文件夹下面的版本文件夹)中结束,或者是否嵌入到单个setup.exe文件中。

第一个设置在Application Data |下的Installation Designer中可用交付。使用复选标记找到列在那里的PRQ先决条件,右键单击它,然后查看属性。您将看到Build Location下拉列表 - 其中一个选项是Extract From Setup.exe。这就是我的设定方式。

但是有一个SECOND设置,那就是在Releases下的Installation Designer的Media部分。在我的项目中,我有一个Releases根,然后是一个PROJECT_ASSISTANT分支,然后是一个SINGLE_EXE_IMAGE分支。我左键单击SINGLE_EXE_IMAGE并查看其属性表。在该列表中是列表底部附近的条目,其中显示“设置先决条件位置”。双击右列(列出其值),您将看到一个选项,也显示从Setup.exe中提取。

第二个设置覆盖了可交付成果部分中指定的设置,这就是它在先决条件设置中未按预期工作的原因。那是因为我使用的是“从源媒体复制”设置。

因此,如果您有多个先决条件,并且您希望所有这些先决条件都包含在setup.exe中,那么可以使用Extract From Setup.exe设置。但是,如果您希望配置先决条件结束的位置,请在“版本的设置先决条件位置”部分中选择“关注单个选择”选项,然后确保为每个先决条件选择了正确的选项。

即使其他人曾建议在之前的答案中这样做,但这些解释对我来说并不清楚,在最终发现实际情况之前我浪费了很多时间。