为SQL Express ClickOnce先决条件安装配置Package.xml?

时间:2009-06-04 21:07:45

标签: winforms deployment clickonce sql-server-express

我有一个由ClickOnce安装的winform应用程序,我需要能够在sqlexpress中默认启用远程连接。

另外,我需要确保本地用户可以访问SQL实例。如何编辑清单文件?

我的应用是合并复制拓扑的一部分。我继承了DAL,直到我改变它,由于SProc的限制,我无法切换到SQL CE。

SQL Express是ClickOnce(能够),并且是VS2008中的默认设置。

以下是SQL Express Bootstrapper软件包的Product.xml。如何修改它以实现我的需要?还有其他人不得不修改这个吗? Here is an example of this

<Command PackageFile="sqlexpr32.exe" Arguments="-q /norebootchk /qn reboot=ReallySuppress addlocal=all instancename=SQLEXPRESS SQLAUTOSTART=1 ADDUSERASADMIN=1" EstimatedInstalledBytes="225000000" EstimatedInstallSeconds="420">
<InstallConditions>
 <BypassIf Property="SQLExpressInstalled" Compare="ValueEqualTo" Value="0"/>
 <BypassIf Property="VersionNT" Compare="VersionLessThan" Value="5.1"/>
 <FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>
 <FailIf Property="Version9x" Compare="ValueExists" String="InvalidPlatformXP"/>
 <FailIf Property="VersionNT" Compare="VersionLessThan" Value="5.1.2" String="InvalidPlatformXP"/>
 <FailIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel" String="InvalidPlatformArchitecture"/>
 </InstallConditions>
<ExitCodes>
 <ExitCode Value="0" Result="Success"/>
 <ExitCode Value="1641" Result="SuccessReboot"/>
 <ExitCode Value="3010" Result="SuccessReboot"/>
 <ExitCode Value="50037" Result="Fail" String="MissingMSXml"/>
 <ExitCode Value="50251" Result="Fail" String="MissingMSXml"/>
 <ExitCode Value="50198" Result="Fail" String="InsufficientHardware"/>
 <ExitCode Value="50236" Result="Fail" String="InsufficientHardware"/>
 <ExitCode Value="50222" Result="Fail" String="InvalidPlatformOSServicePacks"/>
 <ExitCode Value="70003" Result="Fail" String="InvalidPlatformOSServicePacks"/>
 <ExitCode Value="50247" Result="Fail" String="InvalidPlatformIE"/>
 <ExitCode Value="50248" Result="Fail" String="InvalidPlatformIE"/>
 <ExitCode Value="70004" Result="Fail" String="AnotherInstanceRunning"/>
 <ExitCode Value="70032" Result="Fail" String="BetaComponentsFailure"/>
 <ExitCode Value="70033" Result="Fail" String="InvalidPlatformArchitecture"/>
 <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure"/>
 </ExitCodes>
 </Command>

我感谢大家的时间。

3 个答案:

答案 0 :(得分:1)

SQL Express Edition仍然是服务器类数据库。它作为服务一直运行,并且像任何服务器级数据库一样喜欢大量资源。对于本地桌面应用来说,这不是一个好的选择。

如果您需要单个用户数据库,请使用SQL Server Compact Edition,Sqlite甚至Access。我怀疑你是否感激它,如果你安装了一个桌面应用程序,只是发现它拖动了一个完整的SQL Server安装程序。

答案 1 :(得分:0)

SQL Server是一项服务。理论上似乎可以通过点击一次安装服务,请参阅herehere

我怀疑通过点击一次安装SQL Express是不可能的,因为它是一种用于部署沙盒应用程序的技术。 SQL服务器靠近金属运行,不太可能在沙盒中工作。

SQL Compact is another story并且是使用其数据库部署点击一次应用的更合适的方法。

或者让应用程序在另一台服务器上引用数据库。

编辑:如果我的问题全部错了(这是在已经有SQL Express的客户端工作站上点击一次应用程序),则需要启用远程连接this way。有一些证据表明SAC tool can be used可以通过编程方式进行。

答案 2 :(得分:0)

如果你的package.xml没有打球,你想要一个更简单的桌面解决方案firebird可能是一个选项,你可以从sql server转换PDF,存储过程可以保持这种方式。如果我将我所有的sprocs转换为Linq,我会发疯,更不用说测试...... 转换时请注意例如水晶报告或从服务器读取数据的其他第三方工具。需要概念工作的证明。但是已经部署并且现在看到它甚至在W7的新设置上都失败了我同意这里的观点。本地数据库对我们来说并不好看,因为我们的外围设备是硬编码的。\它需要(localdb)\