如何在wix中有条件地运行sql脚本

时间:2012-06-06 19:18:48

标签: wix

我有2个sql脚本,一个用于全新安装,另一个用于更新。我希望此安装程序自动检查数据库是否存在。

伪代码:

IF (database exists)
{
    call 'UpdateDatabase' script
}
ELSE
{
    call 'CreateDatabase' script
}

Product.wxs

<sql:SqlDatabase Id='SqlDatabase' Database='master' Server='.'
  CreateOnInstall='yes' DropOnUninstall='no' ContinueOnError='yes'>
  <sql:SqlScript Id='CreateDatabase' BinaryKey='CreateDatabase' ExecuteOnInstall='yes' />
  <sql:SqlScript Id='UpdateDatabase' BinaryKey='UpdateDatabase' ExecuteOnInstall='yes' />
</sql:SqlDatabase>

2 个答案:

答案 0 :(得分:2)

我明白了。它是ExecuteOnReinstall。按预期工作。

<sql:SqlDatabase Id='SqlDatabase' Database='master' Server='.'
  CreateOnInstall='yes' DropOnUninstall='no' ContinueOnError='yes'>
  <sql:SqlScript Id='CreateDatabase' BinaryKey='CreateDatabase' ExecuteOnInstall='yes' />
  <sql:SqlScript Id='UpdateDatabase' BinaryKey='UpdateDatabase' ExecuteOnReinstall='yes' />
</sql:SqlDatabase>

答案 1 :(得分:1)

目前还没有我知道的内置设施。您需要构建自定义操作。

如果数据库存在与否,您可以在自定义操作中设置属性 根据其值,执行条件检查相应地调用脚本。