WiX中的SqlScript上的ExecuteOnInstall和RollbackOnUninstall属性

时间:2018-03-01 05:50:02

标签: wix rollback sql-scripts sqldb

我的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只包含一个create table语句,只有两个简单的列,即ID和Name。安装MSI时,表将在数据库中创建,但在卸载时,表不会被删除/删除。知道怎么做到这一点?我知道包括下面的代码而不是RollbackOnUninstall = yes的行,那么它的工作原理。但我想避免它。请帮忙。

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

1 个答案:

答案 0 :(得分:0)

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