在C#安装程序中安装第三方应用程序

时间:2013-02-10 10:03:51

标签: c# installer custom-action

我在VS2010中创建了一个用于安装我的应用程序的安装程序,但它有一些第三方先决条件,如python。 我试图将其他安装程序包含为嵌入式资源,将它们作为文件提取并运行它们(作为自定义操作)。它可以工作,但似乎不可能同时运行2个安装程序,所以当从我的安装程序安装这些安装程序时,我收到错误。

如何在应用程序安装期间安装这些第三方应用程序? (属性页面中的“先决条件”没有帮助,因为它们只与.NET和SQL服务器等ms东西相关...)

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用System.Diagnostics.Process。它可以在给定路径上执行文件,例如MySQL服务器安装程序see this但是你需要提供可执行文件。正如Ramhound在他的评论中所建议的那样,看一下用于编写安装程序的商业产品。包括我个人最喜欢的Advanced Installer在内的一些产品提供了可满足您初始要求的免费工具版本。

根据先决条件的打包方式(MSI或EXE),MSI可能无法直接安装先决条件而无需使用自定义操作或引导程序来搜索目标系统以获取先决条件并安装它目标系统上没有。

除此之外,我与Advanced Installer没有任何关系,除了我几年来一直是付费客户的事实。除了坚固的产品外,他们的服务也非常出色。

答案 1 :(得分:0)

我刚遇到同样的问题。我正在使用Bootstrapper Manifest Generator来创建我的引导程序包,然后在我的安装项目中,我选择了这些作为先决条件。其中一个先决条件是Python。根据安装日志,Python安装将以代码0退出,状态为“InstallFailed”。

我发现安装实际上已成功,但0未被识别为成功的退出代码。我在安装文件属性中修复了BMG中的这个问题。有一个退出代码选项卡,您可以在其中手动输入退出代码和结果。我在成功时添加了0,重新创建了包,将其复制到bootstrapper包文件夹,最后重建了我的安装项目。之后,安装工作正常。这是我的BMG设置的屏幕截图:

enter image description here

如果您没有使用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>
相关问题