Wix SqlDatabase 创建 2014 LocalDb 错误
Wix SqlDatabase creation of 2014 LocalDb Error
我有一个 Wix 工具集项目,需要将数据库安装到现有的 SqlServer 2014 LocalDb 安装中,但我完全没有成功。我在 SO 以及其他网站上广泛搜索了可能适用的示例或建议。到目前为止,我在我的项目中没有发现任何有用的东西。
SqlServer Local DB 已经安装在系统上,可以从 SQL Mgmt Studio 访问。所有系统数据库都按预期显示,我可以在 Mgmt Studio 中创建新数据库。
我作为测试包含的文本文件确实正确安装在预期的文件夹中。
我收到的错误因我在 SqlDatabase 元素中定义的选项而异。
来自安装程序日志:
操作 11:46:34:创建文件夹。创建文件夹
创建文件夹:文件夹:C:\Check\Database\
创建文件夹:文件夹:C:\Check\Database\
操作 11:46:34:安装文件。复制新文件
安装文件:文件:TestFile.txt,目录:C:\Check\Database\,大小:19
操作 11:46:34:创建数据库。创建数据库
CreateDatabase:错误 0x80004005:无法创建 SQL 数据库但继续错误:未知错误,数据库:检查
操作 11:46:51:RegisterProduct。注册产品
本次安装的 wxs 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'
xmlns:sql='http://schemas.microsoft.com/wix/SqlExtension'>
<Product Id="*" Name="Ach Check Database Installation" Language="1033" Version="1.0.0.0" Manufacturer="ACH Solutions" UpgradeCode="3828eaf7-528f-4006-9169-27bed44e79fe">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes"/>
<Feature Id="CheckDb" Title="Check Database" Description="The Check Database" ConfigurableDirectory="INSTALLDIR" Level="1">
<ComponentGroupRef Id="DatabaseComponents" />
</Feature>
<UIRef Id="WixUI_Mondo" />
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR" Name="CheckDir" >
<Directory Id="DatabaseFolder" Name="Database" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="DatabaseComponents" Directory="DatabaseFolder">
<Component Id='SqlComponent' Guid='53234257-65F1-4D58-B2CA-90308EC102FF'>
<CreateFolder />
<File Id="file_TestFile.txt" Source="E:\TestFile.txt"/>
</Component>
<Component Id="sql_SqlDatabase" Guid="B4D9CB63-B740-4860-89B6-1209D9A1A18E">
<CreateFolder/>
<sql:SqlDatabase Id='SqlDatabase'
Database='Check'
CreateOnInstall='yes'
Server='localhost\(localdb)\MsSqlLocalDb'
DropOnUninstall='no'
ContinueOnError='yes'>
<sql:SqlFileSpec Id='sql_CheckDatabase' Filename='CheckDatabase.mdb' Name='CheckDatabase' Size='30MB' />
<sql:SqlLogFileSpec Id='sql_CheckDatabase_Log' Filename='CheckDatabase_Log.ldb' Name='CheckDatabaseLog' Size='3MB' />
</sql:SqlDatabase>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
有没有人运行遇到过这个问题或类似的问题?解决方案是什么?
我欢迎任何可能对此有帮助的建议。
谢谢,
尤金
我认为 Server
属性应该只是 '(localdb)\MsSqlLocalDb'
。
还要确保在您 运行 安装程序时 LocalDB 实例已经存在,并且它与安装程序 运行 所在的用户共享。
出于测试目的,您还可以尝试使用命名管道而不是服务器名称。要获取实例管道的名称 运行,请在命令行中执行以下命令:
sqllocaldb info MsSqlLocalDb
WiX 不支持 localdb 连接。
https://github.com/wixtoolset/issues/issues/4957
有人必须更新 dutil 才能使用最新的 SQL Server Native Client,但似乎 7 年来没有人更新过。
另一种方法是为 SQL 处理编写您自己的自定义操作。如果您通过电子邮件向我发送请求,我可以提供一些。
我有一个 Wix 工具集项目,需要将数据库安装到现有的 SqlServer 2014 LocalDb 安装中,但我完全没有成功。我在 SO 以及其他网站上广泛搜索了可能适用的示例或建议。到目前为止,我在我的项目中没有发现任何有用的东西。
SqlServer Local DB 已经安装在系统上,可以从 SQL Mgmt Studio 访问。所有系统数据库都按预期显示,我可以在 Mgmt Studio 中创建新数据库。
我作为测试包含的文本文件确实正确安装在预期的文件夹中。
我收到的错误因我在 SqlDatabase 元素中定义的选项而异。
来自安装程序日志:
操作 11:46:34:创建文件夹。创建文件夹
创建文件夹:文件夹:C:\Check\Database\
创建文件夹:文件夹:C:\Check\Database\
操作 11:46:34:安装文件。复制新文件
安装文件:文件:TestFile.txt,目录:C:\Check\Database\,大小:19
操作 11:46:34:创建数据库。创建数据库
CreateDatabase:错误 0x80004005:无法创建 SQL 数据库但继续错误:未知错误,数据库:检查
操作 11:46:51:RegisterProduct。注册产品
本次安装的 wxs 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'
xmlns:sql='http://schemas.microsoft.com/wix/SqlExtension'>
<Product Id="*" Name="Ach Check Database Installation" Language="1033" Version="1.0.0.0" Manufacturer="ACH Solutions" UpgradeCode="3828eaf7-528f-4006-9169-27bed44e79fe">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes"/>
<Feature Id="CheckDb" Title="Check Database" Description="The Check Database" ConfigurableDirectory="INSTALLDIR" Level="1">
<ComponentGroupRef Id="DatabaseComponents" />
</Feature>
<UIRef Id="WixUI_Mondo" />
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR" Name="CheckDir" >
<Directory Id="DatabaseFolder" Name="Database" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="DatabaseComponents" Directory="DatabaseFolder">
<Component Id='SqlComponent' Guid='53234257-65F1-4D58-B2CA-90308EC102FF'>
<CreateFolder />
<File Id="file_TestFile.txt" Source="E:\TestFile.txt"/>
</Component>
<Component Id="sql_SqlDatabase" Guid="B4D9CB63-B740-4860-89B6-1209D9A1A18E">
<CreateFolder/>
<sql:SqlDatabase Id='SqlDatabase'
Database='Check'
CreateOnInstall='yes'
Server='localhost\(localdb)\MsSqlLocalDb'
DropOnUninstall='no'
ContinueOnError='yes'>
<sql:SqlFileSpec Id='sql_CheckDatabase' Filename='CheckDatabase.mdb' Name='CheckDatabase' Size='30MB' />
<sql:SqlLogFileSpec Id='sql_CheckDatabase_Log' Filename='CheckDatabase_Log.ldb' Name='CheckDatabaseLog' Size='3MB' />
</sql:SqlDatabase>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
有没有人运行遇到过这个问题或类似的问题?解决方案是什么?
我欢迎任何可能对此有帮助的建议。
谢谢,
尤金
我认为 Server
属性应该只是 '(localdb)\MsSqlLocalDb'
。
还要确保在您 运行 安装程序时 LocalDB 实例已经存在,并且它与安装程序 运行 所在的用户共享。 出于测试目的,您还可以尝试使用命名管道而不是服务器名称。要获取实例管道的名称 运行,请在命令行中执行以下命令:
sqllocaldb info MsSqlLocalDb
WiX 不支持 localdb 连接。
https://github.com/wixtoolset/issues/issues/4957
有人必须更新 dutil 才能使用最新的 SQL Server Native Client,但似乎 7 年来没有人更新过。
另一种方法是为 SQL 处理编写您自己的自定义操作。如果您通过电子邮件向我发送请求,我可以提供一些。