WIX-无法创建SQL数据库或运行SQL脚本

WIX-无法创建SQL数据库或运行SQL脚本,wix,windows-installer,Wix,Windows Installer,我是WIX新手,在执行SQL脚本时遇到了一些问题。我看过很多帖子,但都没有成功。我还查找了任何有帮助的SQL Server日志,但没有找到。我在安装日志中收到的错误消息是 <DirectoryRef Id="SERVER"> <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'> <File Id='Server.exe' Source='C:\VS Publish\

我是WIX新手,在执行SQL脚本时遇到了一些问题。我看过很多帖子,但都没有成功。我还查找了任何有帮助的SQL Server日志,但没有找到。我在安装日志中收到的错误消息是

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
CreateDatabase:错误0x80004005:未能创建到数据库:“MVDB”,错误:未知错误 错误26201。错误-2147467259:无法创建SQL数据库:MVDB,错误详细信息:未知错误。 MSI(s)(A4!F4)[13:21:44:978]:产品:Guru 6——错误26201。错误-2147467259:无法创建SQL数据库:MVDB,错误详细信息:未知错误

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
CustomAction CreateDatabase返回了实际错误代码1603(注意,如果转换发生在沙箱中,则这可能不是100%准确)

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
如果我进入SQL Server管理控制台,我可以创建数据库并使用执行安装程序时登录的同一用户运行所有脚本

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
我的代码看起来像这样

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>

我也用过

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
<util:User Id="SQLUser" Name="[%USERNAME]" Domain="[ComputerName]" CreateUser="no"/>  

我还尝试从sql:sqldatabase条目中完全删除用户。我已经检查了实例的所有网络协议都已启用,并且有足够的磁盘空间用于数据库

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
我只是尝试将CreateOnInstall和DropOnInstall都设置为no,并执行SQL脚本来创建数据库,但不能将两者都设置为“no”

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
更新:我将util:user更改为使用sa作为用户,并且成功了。因此,问题肯定是权限问题。 问题是我必须能够使用Windows身份验证。创建数据库时,该标志设置为将当前用户创建为管理员(ADDCURRENTUSERASSQLADMIN=“True”)。我还可以将当前用户视为管理员。 如何让WIX使用当前用户创建数据库

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
我将感谢任何帮助

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
谢谢,
Gary

我通过将sqldatabase元素移到组件外部解决了这个问题。通过这样做,安装程序就不会试图创建数据库(我有一个用于创建数据库的脚本),也不再需要一个until:用户,安装程序似乎正在使用当前用户来运行SQL脚本

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>
加里

<DirectoryRef Id="SERVER">
  <Component Id='Server.exe' Guid='8027388d-0f90-465b-9668-d1388977caaa'>
    <File Id='Server.exe' Source='C:\VS Publish\ProgramFiles\Server\Server.exe' KeyPath='yes'/>
    <ServiceInstall 
      Id="ServiceInstaller" 
      Type="ownProcess" 
      Name="Service" 
      DisplayName="Service" 
      Description="Provides media distribution, data coordination, and licensing services to the  application" 
      Start="auto" 
      Account="[SERVICEACCOUNT]" 
      Password="[SERVICEPASSWORD]" 
      ErrorControl="normal" 
      />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="Service" Wait="yes" />
    <util:User Id="SQLUser" Name="[ComputerName]\[%USERNAME]" CreateUser="no"/>
    <sql:SqlDatabase Id="SqlDatabase" Database="MVDB" Server=".\MVSQLEXPRESS" Instance="MVSQLEXPRESS" 
        CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" User="SQLUser">
      <sql:SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateDatabaseSql" />
      <sql:SqlScript Id="CreateUsers" ExecuteOnInstall="yes" BinaryKey="CreateUsersSql" />
      <sql:SqlScript Id="CreateBaseLineDb" ExecuteOnInstall="yes" BinaryKey="CreateBaseLineDbSql" />
      <sql:SqlScript Id="RemoveOldContent" ExecuteOnInstall="yes" BinaryKey="RemoveOldContentSql" />
      <sql:SqlScript Id="Upgrade" ExecuteOnInstall="yes" BinaryKey="UpgradeSql" />
      <sql:SqlScript Id="AddCompleteMedia" ExecuteOnInstall="yes" BinaryKey="AddCompleteMediaSql" />
      <sql:SqlScript Id="InstallContent" ExecuteOnInstall="yes" BinaryKey="InstallContentSql" />
      <sql:SqlScript Id="UpdateCustomPlayList" ExecuteOnInstall="yes" BinaryKey="UpdateCustomPlayListSql" />
      <sql:SqlScript Id="InstallFeaturedContent" ExecuteOnInstall="yes" BinaryKey="InstallFeaturedContentSql" />
    </sql:SqlDatabase>
  </Component>