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>