通过Windows服务安装MSI

时间:2013-07-20 19:44:18

标签: c# windows-services windows-installer installation

我有一个奇怪的问题,

我有WPF application。我为此创建了windows installer,安装将在用户的开始菜单中创建应用程序快捷方式。我正在通过windows service安装此MSI。通过Windows服务安装工作正常,但它不会在开始菜单中创建快捷方式,我也没有在程序和功能下看到此应用程序。但如果我手动安装这一切一切正常。任何线索为什么会发生这种情况?

  

执行MSI的代码

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

1 个答案:

答案 0 :(得分:1)

MSI中的

InstallAllUsers属性设置为false。我的Windows服务在Local System account下运行,我的计算机已使用windows authentication下的administrator account登录。因此,当安装发生时,假设MSI是由用户安装的,而不是使用Windows身份验证登录到机器的用户,因此它不会显示在开始菜单中以及“程序和功能”下。

我没有必要将InstallAllUsers保持为假,因此我只是将其设为真,这解决了我的问题。