3

Wix 显然可以提示/告诉用户数据库存在,并让他们选择覆盖或取消安装。不幸的是,用户无法指定“不覆盖”并继续安装。

因此,Wix 可以默默地不覆盖数据库吗?如果数据库存在,则忽略并继续下一条指令。

如果没有,是否有另一种方法来实现需要重新安装并且数据库已经到位的事实?

当前我的 Wix 片段如下所示:

<Fragment>
    <ComponentGroup Id="COMPG_MyProductDatabase" Directory="TARGETDIR">
      <Component Id="COMPG_MyProductDatabase.sql" Guid="{...}">
        <File Id="FILE_MyProductDatabase.sql" Source="..\MyProduct.Cache.Database\MyProduct.Deployment.sql" Name="MyProduct.Deployment.sql" KeyPath="yes" Checksum="yes"/>
      </Component>

      <Component Id='COMP_MyProductDatabase' Guid='{...}'>
        <CreateFolder/>
        <sql:SqlDatabase Id='DB_MyProductDatabase' Database='MyProduct' Server='[PROP_DATABASESERVERNAME]'
          CreateOnInstall='yes' DropOnUninstall='no' ContinueOnError='yes' ConfirmOverwrite='yes'>
          <sql:SqlScript Id='SQL_MyProductDatabase' BinaryKey='FILE_MyProductDatabase' ExecuteOnInstall='yes' />
        </sql:SqlDatabase>
      </Component>
   </ComponentGroup>
    <Binary Id='FILE_MyProductDatabase'  SourceFile='..\MyProduct.Cache.Database\MyProduct.Deployment.sql' />
</Fragment>
4

1 回答 1

2

将数据库创建移动到您的 SQL 脚本中,然后使用 SQL 语句来执行条件逻辑。更改 SqlDatabase 元素以连接到“master”以使其正常工作。

于 2013-03-12T02:58:11.663 回答