gpt4 book ai didi

database - WiX:数据库卸载

转载 作者:搜寻专家 更新时间:2023-10-30 23:03:23 25 4
gpt4 key购买 nike

我已经完成了一个 WiX 3.9 项目,有一个小问题......

它能够:-- 跳过 EULA-- 向用户询问数据库字符串 -- 保存在RegKey中-- 在 inetpub\wwwroot 文件夹中安装文件(由客户端定义)-- 创建一个应用程序池-- 创建 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:正在寻找产品代码为“{Some random GUID}”的 appcompat 数据库条目。

MSI (s) (8C:8C) [11:51:49:620]: APPCOMPAT: 在数据库中找不到匹配的 ProductCode。

...

MSI (s) (8C:8C) [11:51:49:888]:组件:数据库;安装:本地;要求:缺席;行动:空

有什么想法吗?

提前谢谢你。

最佳答案

FWIW,我不建议在卸载期间运行 SQL 脚本。没有什么比因为某些 SQL 依赖项引发错误而无法卸载某些东西更糟糕的了。此外,它是用户数据……就这样吧。

我也不喜欢 IF EXIST DROP THEN CREATE 模式,因为您可能会丢失用户数据。

关于database - WiX:数据库卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29611275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com