我使用 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/