如何从另一个安装程序运行一个安装程序

本文关键字:安装 程序 一个 运行 另一个 | 更新日期: 2023-09-27 18:14:53

我有一个3个模块的解决方案。Windows、Web和Windows Service。我想创建一个父安装程序,运行关于用户选择的三个子安装程序包。

我创建了一个安装项目,如下所示:
  • 我创建了一个包含InstallerHelper的库,它继承自Installer
  • 我添加了以下代码:

public override void Install(IDictionary stateSaver)
{
    base.Install(stateSaver);
    try
    {
        FileInfo fileInfo = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
        string sProgram = Path.Combine(fileInfo.DirectoryName, "Setup1.msi");
        Process p = Process.Start(sProgram);
        p.WaitForExit();
    }
    catch (Exception exc)
    {
        Context.LogMessage(exc.ToString());
        throw;
    }
}

问题是windows安装程序拒绝运行多个windows安装程序实例并抛出以下错误:

另一个安装正在进行中。你必须完成这个

我的方法正确吗?是否有其他方法可以运行另一个安装程序,并且父安装程序应该等待所有这些安装程序,并单击Finish

如何从另一个安装程序运行一个安装程序

您可以使用Wix Burn创建包含多个应用程序安装程序的安装包(msi/exe):

  • Wix Toolset: Building Installation Package Bundles
  • Neil Sleightholm的Blog: WiX Burn - tips/tricks