WiX 中 SqlScript 的 ExecuteOnInstall 和 RollbackOnUninstall 属性

ExecuteOnInstall and RollbackOnUninstall attributes on SqlScript in WiX

我的数据库 wxs 文件中有以下代码。

<Binary Id="binCreateTbl" SourceFile="CREATE_TABLE.sql" />

 <sql:SqlScript BinaryKey="binCreateTbl" Id="script_CreateTbl" ExecuteOnInstall="yes" Sequence="2"/>
 <sql:SqlScript BinaryKey="binCreateTbl" Id="script_CreateTbl1" RollbackOnUninstall="yes" Sequence="1" />

Create_Table.sql 仅包含一个创建 table 语句,其中只有两个简单的列,即 ID 和 Name。安装 MSI 时,table 会在数据库中创建,但在卸载时,table 不会被删除/删除。知道如何实现这一目标吗?我知道包括以下代码而不是带有 RollbackOnUninstall=yes 的行,然后就可以了。但我想避免它。请帮忙

<Binary Id="binDropTbl" SourceFile="DROP_TABLE.sql" />
<sql:SqlScript BinaryKey="binDropTbl" Id="script_DropTbl" ExecuteOnUninstall="yes" />

看来这不可能。由于 MSI 无法知道 sql 文件中写入的内容,因此无法简单地使用 RollbackOnUninstall=yes 回滚。必须有一个单独的脚本,其中包含在卸载期间删除/删除 table 的代码,并且必须使用 ExecuteOnUninstall=yes.

调用它