我们使用msi来安装我们的程序。我们有类似于以下的自定义安装代码:
using System;
using System.Configuration.Install;
[RunInstaller(true)]
public partial class Installer1 : Installer
{
protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
MyProgram.Start();
}
}
问题是程序将以SYSTEM用户身份启动,因为msiexec正在以SYSTEM身份运行。是否有一种合理的方法让程序以最初执行msi而不是SYSTEM的用户身份启动?
答案 0 :(得分:1)
请查看有关如何在安装结束时启动非提升流程的文章
start a non-elevated process at the end of the installation
另一种选择是执行以下操作
要在安装完成后运行任何应用程序,请右键单击您的安装项目,然后单击“自定义操作”。然后右键单击Commit,Add Custom Action,并选择要运行的文件。请注意,它必须已经在您的应用程序文件夹中,因为您运行程序无论如何都不应该是您的问题。只需选择项目的输出即可。
然后,单击此添加的.exe,并将InstallerClass更改为false。这很重要,因为它会寻找安装程序。