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

Installation MSI错误1500:InstallShield Premium无法运行辅助嵌入式安装EXE,installation,windows-installer,installshield-2012,Installation,Windows Installer,Installshield 2012,我已经使用InstallShield Premium 2012为自己的Windows EXE编写了一个安装脚本。然而,我的EXE最终依赖于名为AccessDatabaseEngine.EXE的Microsoft EXE提供的状态组件 为了在我的安装中运行此AccessDatabaseEngine.exe可执行文件,我将其添加为嵌入式二进制资源,然后使用自定义操作向导将AccessDatabaseEngine.exe作为“系统上下文中的延迟执行”作为“发布后功能”安装执行序列启动。正如预期的那样:

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

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

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

我明白,除非您调整注册表以允许,否则两个MSI软件包不能同时运行,我不希望在我客户的工作站(Windows 7 32位计算机)上这样做

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

选项一:让用户启动my Setup.exe程序,该程序将在某个时候启动Microsoft AccessDatabaseEngine.exe,而不会生成任何错误消息。我只是不知道如何在不出现错误的情况下做到这一点

选项二:如果可以将我的Setup.exe和Microsoft的AccessDatabaseEngine.exe打包成一个exe,那么我可以为最终用户提供这个exe,它将首先执行嵌入的Setup.exe,一旦完成,它将执行AccessDatabaseEngine.exe

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


有什么想法吗?

您在这里描述的正是InstallShield的先决条件的设计目的。从“工具”菜单启动必备编辑器,并添加文件、命令行和条件,以携带、安装和检测AccessDatabaseEngine.exe的已安装示意图;然后使用“可再发行文件”视图将新的先决条件包括在项目中

正确完成此操作后,InstallShield的安装启动器将检查是否存在先决条件示意图,如果不存在,它将按照说明运行先决条件。由于这是在启动主.msi文件之前完成的,因此避免了同时安装两个.msi文件


有关更多详细信息,请参见帮助中的和。有关定义这些文件在内置安装程序中的最终位置,请参阅或。请注意,在添加先决条件的依赖项时,它们通常使用版本级别设置,因此除非您真的想要混合位置,否则最好在版本中指定此设置。

显然,有两种设置可确定先决条件是否最终位于其自己的单独文件夹中(包含setup.exe的文件夹下的发布文件夹),或者如果它嵌入到单个setup.exe文件中

第一个设置在安装设计器的“应用程序数据|可交付成果”下可用。找到列出的带有复选标记的PRQ先决条件,右键单击该先决条件,然后查看属性。您将看到“生成位置”下拉列表——其中一个选项是“从Setup.exe提取”。这就是我的设置方式

但是还有第二个设置,在安装设计器的“媒体”部分的“发布”下。在我的项目中,我有一个发布根目录,然后是项目助理分支,然后是单个图片分支。我左键单击了单个图片并查看了它的属性页。在该列表中,靠近列表底部的一个条目显示Setup Prerequisite位置。双击右列(列出其值的位置),您将看到一个选择,其中还显示Extract From Setup.exe

第二个设置覆盖了“可交付成果”部分中指定的设置,这就是为什么它没有按照先决条件设置中指定的方式工作。这是因为我使用了“从源媒体复制”设置

因此,如果您有多个先决条件,并且希望所有先决条件都包含在setup.exe中,则可以使用从setup.exe设置中提取的内容。但是,如果您希望配置先决条件的最终位置,请在版本的“安装先决条件位置”部分中选择以下各个选项,然后确保您已为每个先决条件选择了正确的选项


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

谢谢——这是一个可以接受的解决方案,但AccessDatabaseEngine.exe最终作为一个单独的exe和(理想情况下)保存在一个文件夹中我想要一个没有外部依赖项的Setup.exe;另外,我的Setup.exe(Direct Editor | ISRelease | password列)上有一个密码,密码提示在Setup.exe出现之前出现,然后在启动必备的AccessDatabaseEngine.exe之前再次出现(理想情况下,我希望pw提示只出现一次)。此时,我将打开一个第三方工具,该工具可能会将Setup.exe和文件夹与其他exe打包(如果存在)。我不确定密码,但对于外部文件,您可以在“可再发行文件”视图的右键单击属性中或在“版本”视图的“版本配置”中设置位置。尽可能作为外部文件,可再发行文件属性允许您选择本地路径或web位置(由于客户端防火墙和有限的代理,我不选择此选项);release configuration允许我更改AccessDatabaseEngine.exe的名称/位置,但我看不到嵌入它的方法。理想情况下,我希望将AccessDatabaseEngine.exe添加为二进制资源,并将