0

我的 wxs 文件中有以下用于 DB 的代码。

<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 只包含一个创建表语句,其中只有两个简单的列,即 ID 和 Name。安装 MSI 时,表会在数据库中创建,但在卸载时,表不会被删除/删除。知道如何实现这一目标吗?我知道包含以下代码而不是带有 RollbackOnUninstall=yes 的行,那么它可以工作。但我想避免它。请帮忙。

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

1 回答 1

0

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

于 2018-06-04T10:13:57.477 回答