0

我已经构建了一个安装程序来启动另一个安装程序(在它的提交阶段)(setup.exe 和 .msi 文件放在“BoardsControllerSetup”目录中)

靠我自己,开发系统(运行 w7 专业版),一切都很花哨

在另一台 w7 机器上测试,以具有基本权限的用户身份登录(我很确定权限是罪魁祸首),第二个应用程序不会出现在已安装的程序列表中(也不会在桌面上创建它的图标) .

(稍后我需要从第一个应用程序中启动第二个应用程序,所以我希望能够从注册表中获取它的安装路径我总是可以尝试使用安装路径创建一个注册表字符串.. 但是现在我实际上很好奇如何直接解决这个问题)。

任何和所有的帮助表示赞赏。

肖恩

        System.Diagnostics.Process cBoardsControllerSetupProcess = new System.Diagnostics.Process();
        startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.WorkingDirectory = Path.Combine(sInstallDir, "BoardsControllerSetup");
        startInfo.FileName = "setup.exe";
        cBoardsControllerSetupProcess.StartInfo = startInfo;
        cBoardsControllerSetupProcess.Start();
4

1 回答 1

0

Windows Installer 不支持同时运行两个基于 MSI 的安装。所以很可能第二个安装程序失败,因为主安装当前正在运行。它在一台机器上工作的事实只是一个时间巧合。

从 InstallExecuteSequence 运行另一个基于 MSI 的安装的唯一(非弃用)方法是在InstallFinalize之后使用msidbCustomActionTypeAsync 和 msidbCustomActionTypeContinue标志来安排它。这样它将在主安装完成后运行。

请注意,安装现有软件包的推荐方法是将它们添加为先决条件。一些商业安装工具支持由 MSI 控制的基于功能的先决条件,但大多数安装工具只允许 EXE 引导程序处理的先决条件。

于 2012-04-11T06:54:49.497 回答