【发布时间】:2015-06-19 02:45:10
【问题描述】:
我已经完成了一个 WiX 3.9 项目,但有一个小问题...
它能够: -- 跳过 EULA -- 向用户询问数据库字符串 -- 将其保存在 RegKey 中 -- 在 inetpub\wwwroot 文件夹中安装文件(由客户端定义) -- 创建一个 AppPool -- 创建一个 IIS -- 创建数据库 -- 运行脚本来删除数据库,如果它已经存在 -- 运行一个脚本来创建整个数据库(表和内容,必要的用户)
但是,在卸载过程中,所有内容都会被删除,但数据库不会丢失。
我通过在创建数据库之前运行脚本来测试删除数据库的脚本。有用。我无法让它在卸载时运行。
这是我的 wix sql:SqlDatabase 标记:
<!-- - - - - DB/SQL Script - - - - -->
<sql:SqlDatabase Id="CreateBingoServer" Server="[SERVERNAME]" Database="BingoServer" CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="no" >
<!-- Pre-Drop on Create -->
<sql:SqlScript Id="PreDrop" BinaryKey="Drop" ExecuteOnInstall="yes" Sequence="1" ContinueOnError="yes" />
<!-- Create on Install -->
<sql:SqlScript Id="Script" BinaryKey="Database" ExecuteOnInstall="yes" Sequence="2" ContinueOnError="no" />
<!-- Drop on Uninstall -->
<sql:SqlScript Id="Drop" BinaryKey="Drop" ExecuteOnUninstall="yes" Sequence="1" ContinueOnError="no" />
<!-- -->
</sql:SqlDatabase>
对于 Drop,我尝试了“ExecuteOnUninstall”和“RollbackOnUninstall”。
我也试过了:
<sql:SqlScript Id="Drop" BinaryKey="Drop" ExecuteOnUninstall="yes" Sequence="1" ContinueOnError="no" SqlDb="CreateBingoServer" />
(在 sql:SqlDatabase 标记之外)并且不运行。我已将“序列”从 1 更改为 9;没有变化。
详细日志显示未找到数据库,但 SERVERNAME = "来自 RegKey/安装程序输入的正确字符串"
MSI (s) (8C:8C) [11:51:49:620]: APPCOMPAT: 正在寻找带有 ProductCode '{Some random GUID}' 的 appcompat 数据库条目。
MSI (s) (8C:8C) [11:51:49:620]:APPCOMPAT:在数据库中找不到匹配的 ProductCode。
...
MSI (s) (8C:8C) [11:51:49:888]:组件:数据库;安装:本地;请求:缺席;行动:空
有什么想法吗?
提前谢谢你。
【问题讨论】:
标签: database iis wix uninstallation