我已经完成了一个WiX 3.9项目,只有一个小问题...
它能够:--跳过EULA --向用户索要数据库字符串--将其保存在RegKey中--在inetpub\wwwroot文件夹(由客户机定义)中安装文件--创建一个AppPool --创建一个AppPool --创建一个数据库--运行一个脚本来删除数据库,如果它已经存在--运行一个脚本来创建整个数据库(表和内容,必要的用户)
但是,在卸载过程中,将删除所有内容,但不会删除数据库。
我测试了删除数据库的脚本,方法是在创建数据库之前运行它。它起作用了。我不能让它在卸载时运行。
这是我的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/installer输入的正确字符串”
MSI (s) (8C:8C) 11:51:49:620: APPCOMPAT:查找具有ProductCode‘{ProductCode GUID}’的appcompat数据库条目。
MSI (s) (8C:8C) 11:51:49:620: APPCOMPAT:在数据库中找不到匹配的ProductCode。
..。
MSI (s) (8C:8C) 11:51:49:888:组件:数据库;已安装:本地;请求:不存在;操作:空
有什么想法吗?
谢谢你,提前谢谢。
发布于 2015-04-14 02:37:35
FWIW,我不建议在卸载期间运行SQL脚本。没有比无法卸载更糟糕的了,因为某些SQL依赖项抛出了一个错误。此外,这是用户数据..。别管它了。
我也不喜欢IF EXIST DROP THEN CREATE模式,因为您可能会丢失用户数据。
https://stackoverflow.com/questions/29611275
复制相似问题