2009-10-16 74 views
1

我使用VS 2008创建了一个新的Visual Studio安装项目。Visual Studio安装项目 - 以系统帐户运行

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

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

我试图通过自定义操作和通过C#代码启动该过程,该代码在通过Process.Start安装模块后运行。 但他们两个都以System帐户的身份运行SQLExpress进程。

我能做些什么来运行这个过程,而不是当前登录的用户?

注意:我也尝试启动calc.exe,它也作为系统进程运行。为什么不能像安装程序运行时那样在同一用户的环境下运行?

+0

我有点困惑。你创建了一个MSI来安装SQL Express?那为什么不使用SQL Express安装程序?或者SQL Express是您希望在应用程序之前安装的先决条件? – 2009-10-16 17:34:11

+0

我也安装了其他exes,但在我的应用程序启动之前,我需要安装MS SQL Express的新实例。 – 2009-10-16 17:35:28

+0

你是如何做到的?典型的方法是为引导程序创建一个包描述,并将其添加到属性 - >先决条件下到您的设置和部署项目中。 – 2009-10-16 17:37:54

回答

4

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

这可以通过右键点击来完成你的设置项目,然后选择属性 - >前提,然后检查的SQL Server Express 2008

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

更新:

如果要指定一个实例名称没有办法解决手工编辑引导程序包定义。

对于Visual Studio 2008的引导程序包放置在以下位置默认:

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

这里,你还会发现一个文件夹名称SQLEXPRESS。在该文件夹中,打开文件en \ package.xml并修改安装程序的命令行参数。有三个部分取决于目标操作系统上(赢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来创建自己的独立引导程序包。

+0

如何在这种情况下指定实例名称?在我通过sql express为您提供的命令行完成之前。/INSTANCENAME = MyInstance我想部署一个新的实例。 – 2009-10-16 17:44:12

+0

感谢您的帮助! – 2009-10-16 18:01:39