我有一个wix项目,可以安装一个网站,一些SQL Server数据库并配置用户等。
部分安装使用自定义操作为ASP.NET成员资格系统创建数据库,以执行aspnet_regsql.exe。
然后,安装的另一部分需要执行SQL脚本来创建初始用户。问题是脚本组件在自定义操作发生之前就已执行,因此脚本中对成员资格表和存储过程的引用无效,安装失败。
这是我的安装文件的一部分:
<Feature Id="Complete" Title="Darzi Web" Level="1" Display="expand" ConfigurableDirectory="INSTALLDIR">
<ComponentGroupRef Id="SiteIISConfig"/>
<ComponentGroupRef Id="SQLConfig" />
<ComponentGroupRef Id="InstallFiles" />
<ComponentRef Id="WebConfigChanges" />
<ComponentGroupRef Id="SQLBootstrap" />
</Feature>
<InstallExecuteSequence>
<Custom Action='RegSql' After='InstallFiles'/>
</InstallExecuteSequence>
我需要一种方法告诉安装程序确保在“RegSql”之后发生“SQLBootstrap”。
感谢任何帮助。
修改
这是运行Bootstrap SQL的部分:
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Component Id="SqlBoostrapComponent" Guid="CAAA1447-446F-4C1B-9239-812ABA5AF0FF" KeyPath="yes">
<sql:SqlScript SqlDb='DarziAspNetDbDatabase' Id='Bootstrap' BinaryKey='Bootstrap' ExecuteOnInstall='yes' Sequence='1' />
</Component>
</DirectoryRef>
<Binary Id='Bootstrap' SourceFile='Bootstrap.sql' />
<ComponentGroup Id="SQLBootstrap">
<ComponentRef Id="SqlBoostrapComponent" />
</ComponentGroup>
</Fragment>
答案 0 :(得分:3)
假设您运行的Sql脚本使用内置sql actions您需要在RegSql操作后安排InstallSqlData
操作:
<Custom Action="InstallSqlData" After="RegSql" />