我在 VS2010 中创建了一个安装程序来安装我的应用程序,但它有一些第 3 方的先决条件,例如 python。我尝试将其他安装程序作为嵌入式资源包含在内,将它们提取为文件并运行它们(作为自定义操作)。它可以工作,但似乎不可能同时运行 2 个安装程序,所以当从我的安装程序安装这些安装程序时,我得到一个错误。
在我的应用程序安装期间如何安装这些 3rd 方应用程序?(属性页中的“先决条件”没有帮助,因为它们仅与 .NET 和 sql server 等 ms 内容相关......)
谢谢!
我在 VS2010 中创建了一个安装程序来安装我的应用程序,但它有一些第 3 方的先决条件,例如 python。我尝试将其他安装程序作为嵌入式资源包含在内,将它们提取为文件并运行它们(作为自定义操作)。它可以工作,但似乎不可能同时运行 2 个安装程序,所以当从我的安装程序安装这些安装程序时,我得到一个错误。
在我的应用程序安装期间如何安装这些 3rd 方应用程序?(属性页中的“先决条件”没有帮助,因为它们仅与 .NET 和 sql server 等 ms 内容相关......)
谢谢!
您可以为此使用 System.Diagnostics.Process。它可以执行给定路径上的文件,例如 MySQL 服务器安装程序。看到这个但是你需要提供可执行文件。正如 Ramhound 在他的评论中建议的那样,看看商业产品来创作你的安装程序。有几个,包括我个人最喜欢的 Advanced Installer,提供了可以满足您初始要求的免费版本的工具。
根据先决条件的打包方式(MSI 或 EXE),如果不使用自定义操作或引导程序,您的 MSI 可能无法直接安装 prereq,该引导程序将在目标系统中搜索 prereq 并在它不存在时安装它目标系统。
顺便说一句,我与 Advanced Installer 没有任何关系,除了我已经成为付费客户几年了。除了可靠的产品外,他们的服务也非常出色。
我刚刚遇到了同样的问题。我使用Bootstrapper Manifest Generator来创建我的引导程序包,然后在我的安装项目中我选择了这些作为先决条件。先决条件之一也是 Python。根据安装日志,Python 安装将以代码 0 和状态“InstallFailed”退出。
我发现安装实际上成功了,但是 0 没有被识别为成功的退出代码。我在 BMG 的安装文件属性中修复了这个问题。有一个退出代码选项卡,您可以在其中手动输入退出代码和结果。我在 Success 的结果中添加了 0,重新构建了包,将其复制到 bootstrapper 包文件夹,最后重新构建了我的安装项目。之后安装工作正常。这是我的 BMG 设置的屏幕截图:
如果您不使用 BMG,您可以手动编辑 Product.xml 的 Commands 节点,如下所示:
<Commands Reboot="Defer">
<Command PackageFile="python-2.7.5.msi" Arguments="/q /norestart">
<ExitCodes>
<ExitCode Value="0" Result="Success" />
<DefaultExitCode Result="Fail" String="Anunexpectedexitcodewasr" FormatMessageFromSystem="true" />
</ExitCodes>
</Command>
</Commands>