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();