我已经构建了一个启动另一个安装程序的安装程序(在其提交阶段) (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();
答案 0 :(得分:0)
Windows Installer不支持同时运行的两个基于MSI的安装。因此,第二个安装程序很可能会失败,因为主安装当前正在运行。它在一台机器上工作的事实只是一个时间巧合。
从InstallExecuteSequence运行另一个基于MSI的安装的唯一(不推荐)方法是在InstallFinalize之后使用msidbCustomActionTypeAsync and msidbCustomActionTypeContinue标志安排它。这样它将在主安装完成后运行。
请注意,安装现有软件包的推荐方法是将它们添加为先决条件。一些商业设置工具支持由MSI控制的基于特征的先决条件,但大多数设置工具仅允许由EXE引导程序处理的先决条件。