【问题标题】:Installing MSI through windows service通过 windows 服务安装 MSI
【发布时间】:2013-07-19 21:59:31
【问题描述】:

我有一个奇怪的问题,

我有一个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();

【问题讨论】:

  • 只是一个问题......对于msi,你还没有保留任何屏幕?该服务会自动安装所有内容吗?
  • 我正在进行静默安装。所以我没有看到任何屏幕。
  • 你能在执行 msi 的服务中显示代码吗?
  • 刚刚添加了在 Windows 服务中执行 MSI 的代码
  • 使用 shell 会改变什么?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 2010-10-23
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2016-03-06
    • 2013-09-30
    • 1970-01-01
    相关资源
    最近更新 更多