我使用InstallShield Premium 2012为我自己的
Windows EXE编写了一个安装脚本.但是,我的EXE最终依赖于名为AccessDatabaseEngine.exe的Microsoft EXE提供的状态组件.
为了使用我的安装运行此AccessDatabaseEngine.exe可执行文件,我将其添加为嵌入式二进制资源,然后使用自定义操作向导将AccessDatabaseEngine.exe作为“在系统上下文中延迟执行”作为“After PublishFeatures”安装Exec序列.这按预期工作: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安装我的软件正常运行所需的一切.
有任何想法吗?
最佳答案 您在此处描述的正是InstallShield的先决条件所针对的.从“工具”菜单启动先决条件编辑器,然后添加文件,命令行和条件,以承载,安装和检测AccessDatabaseEngine.exe的已安装封装;然后使用redistributables视图在项目中包含新的先决条件.
正确完成此操作后,InstallShield的安装启动程序将检查先决条件是否存在,如果不存在,它将按照描述运行先决条件.由于这是在启动主.msi文件之前完成的,因此避免同时安装两个.msi文件.
有关更多详细信息,请参阅帮助中的Defining InstallShield Prerequisites,Creating an InstallShield Prerequisite和Setting Installation Conditions for an InstallShield Prerequisite.有关在构建的安装程序中定义这些内容的位置,请参阅Specifying the Run-Time Location for InstallShield Prerequisites at the Release Level或Specifying a Run-Time Location for a Specific InstallShield Prerequisite.请注意,当添加先决条件的依赖项时,它们通常使用发布级别设置,因此除非您确实需要混合使用位置,否则最好在发布中指定它.