c# - Visual Studio 安装项目 - 以系统帐户运行

标签 c# windows-installer setup-project

我使用 VS 2008 创建了一个新的 Visual Studio 安装项目。

我用它来安装 SQLExpress。 当我在安装程序之外手动安装时,SQLExpress 的安装工作正常。

但是当我安装时,我在具有权限的 SQL Express 中遇到错误。 我发现这是因为当我从安装项目运行 SQLExpress 进程时,它正在作为系统帐户运行。

我尝试通过自定义操作和通过 Process.Start 安装模块后运行的 C# 代码来启动进程。 但他们都以系统帐户运行 SQLExpress 进程。

我该怎么做才能以当前登录用户的身份运行此进程?

注意:我还尝试启动 calc.exe,它也作为系统进程运行。为什么它不能在与我的安装程序相同的用户上下文中运行?

最佳答案

如果您想安装 SQL Server Express 作为您应用程序的先决条件,您应该将其作为先决条件添加到您的安装和部署项目中。

这可以通过右键单击您的安装项目,然后选择Properties -> Prerequisites 然后选中SQL Server Express 2008 来完成。

请注意,为了使 SQL Server Express 在先决条件列表中可用,它必须安装在您的开发计算机上。

更新:

如果您想指定实例名称,则无法手动编辑 Bootstrap 包定义。

对于 Visual Studio 2008, Bootstrap 包默认放置在以下位置:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages

在那里您还会找到一个名为 SqlExpress 的文件夹。在该文件夹中,打开文件 en\package.xml 并修改安装程序的命令行参数。根据目标操作系统(Win 2000、XP 和 2003+),分为三个部分:

<Command PackageFile="sqlexpr32.exe" 
         Arguments="-q /norebootchk /qn reboot=ReallySuppress addlocal=all 
                    instancename=SQLEXPRESS SQLAUTOSTART=1 ADDUSERASADMIN=1" 
                    EstimatedInstalledBytes="225000000" 
                    EstimatedTempBytes="225000000" 
                    EstimatedInstallSeconds="420">

   ...

</Command>

此更改将影响所有 将此软件包作为先决条件的安装程序,这些安装程序是在您的系统上构建的。如果您不想这样做,则必须通过复制 SqlExpress 文件夹并更新 SqlExpress\package.xml 中的 ProductCode 来创建自己的独立 Bootstrap 包。

关于c# - Visual Studio 安装项目 - 以系统帐户运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579351/

相关文章:

c# - asp.net core 2.0 - 基于声明和策略的授权

c# - 扩展工具包 SplitButton : use ComboBox ItemsSource as DropDownContent

c# - 如何将面板定位在页面底部

c# - 如何在 Windows Installer 自定义对话框中将字段设置为必填

visual-studio-2008 - VS2008安装项目会更新Net 3.5 SP1吗?

c# - 从对象列表创建多维数组

installation - WiX - CustomAction ExeCommand - 隐藏控制台

wix - Wix 中的 InstallScope ="perMachine"没有区别

installation - 如何在使用 VS 2003 安装项目安装期间在 %allusersprofile% 下创建文件夹?

wpf - 使用 .NET 5 的独立部署模式创建 Visual Studio 安装项目