C# 通过windows服务安装MSI

C# 通过windows服务安装MSI,c#,windows-services,windows-installer,installation,C#,Windows Services,Windows Installer,Installation,我有一个奇怪的问题 我有一个WPF应用程序。我已经为此创建了一个windows installer,安装将在用户的“开始”菜单中创建应用程序快捷方式。我正在通过windows服务安装此MSI。通过windows服务安装工作正常,但它不会在“开始”菜单中创建快捷方式,而且我在“程序和功能”下看不到此应用程序。但是如果我手动安装,一切都正常。你知道为什么会这样吗 执行MSI的代码 MSI中的installUsers属性设置为false。我的windows服务是在本地系统帐户下运行的,我的计算机是在管

我有一个奇怪的问题

我有一个
WPF应用程序
。我已经为此创建了一个
windows installer
,安装将在用户的“开始”菜单中创建应用程序快捷方式。我正在通过windows服务安装此MSI。通过windows服务安装工作正常,但它不会在“开始”菜单中创建快捷方式,而且我在“程序和功能”下看不到此应用程序。但是如果我手动安装,一切都正常。你知道为什么会这样吗

执行MSI的代码


MSI中的
installUsers
属性设置为
false
。我的windows服务是在
本地系统帐户下运行的
,我的计算机是在
管理员帐户下用
windows身份验证
登录的。因此,当安装发生时,假定MSI是由使用windows身份验证登录计算机的用户以外的用户安装的,因此它不会显示在“开始”菜单以及“程序和功能”下


我没有必要将InstallAllUsers设置为false,所以我只是简单地将其设置为true,从而解决了我的问题。

只是一个问题。。。对于msi,你没有保留任何屏幕?服务会自动安装所有东西吗?我正在进行静默安装。所以我看不到任何屏幕。你能在执行msi的服务中显示代码吗?只是添加了一段在windows服务中执行msi的代码。使用shell可以改变什么吗?
 Process installProcess = new Process();
                //Assign required properties
                installProcess.StartInfo.FileName = MSIEXEC;
                installProcess.StartInfo.RedirectStandardError = true;
                installProcess.StartInfo.UseShellExecute = false;

                LogManager.Write("Process object is created");

                //Create new StringBuilder instance
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.Append(SYMBOL_SLASH);
                stringBuilder.Append(SYMBOL_INSTALL);
                stringBuilder.Append(installerPath);
                stringBuilder.Append(SYMBOL_QN);

                LogManager.Write("StringBuilder is created: " + stringBuilder.ToString());

                installProcess.StartInfo.Arguments = stringBuilder.ToString();
                installProcess.Start();