C# 在另一个安装程序中启动安装程序(setup.exe),程序将不会出现在“已安装程序”列表中

C# 在另一个安装程序中启动安装程序(setup.exe),程序将不会出现在“已安装程序”列表中,c#,.net,windows-installer,registration,C#,.net,Windows Installer,Registration,我构建了一个安装程序,可以启动另一个安装程序(在提交阶段) (setup.exe和.msi文件位于“BoardsControllerSetup”目录中) 就我个人而言,开发系统(运行w7 professional),一切都很好 在另一台w7机器上进行测试,以具有基本权限的用户身份登录(我很确定权限是罪魁祸首),第二个应用程序不会出现在已安装程序列表上(也不会在桌面上创建图标) (稍后,我需要从第一个应用程序中启动第二个应用程序,因此我希望能够从注册表获取它的安装路径 我总是可以尝试用安装路径创建

我构建了一个安装程序,可以启动另一个安装程序(在提交阶段) (setup.exe和.msi文件位于“BoardsControllerSetup”目录中)

就我个人而言,开发系统(运行w7 professional),一切都很好

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

(稍后,我需要从第一个应用程序中启动第二个应用程序,因此我希望能够从注册表获取它的安装路径 我总是可以尝试用安装路径创建注册表字符串……但现在我真的很好奇如何直接修复它)

感谢您的帮助

肖恩


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

从InstallExecuteSequence运行另一个基于MSI的安装的唯一(未弃用)方法是使用标志将其计划在之后。这样,它将在主安装完成后运行


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

一旦确定这是否是用户权限问题,请返回。我们不能回答不完整的问题。很酷的问题。您是否打开了MSI日志记录,检查了应用程序的退出代码,并使用了特殊的权限开关?小更新:我最终只是使用一个批处理文件一个接一个地运行我所需的所有安装-所以这是另一个简单的无麻烦解决方案。
        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();