首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WiX:数据库卸载

WiX:数据库卸载
EN

Stack Overflow用户
提问于 2015-04-14 01:21:11
回答 1查看 717关注 0票数 1

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

它能够:--跳过EULA --向用户索要数据库字符串--将其保存在RegKey中--在inetpub\wwwroot文件夹(由客户机定义)中安装文件--创建一个AppPool --创建一个AppPool --创建一个数据库--运行一个脚本来删除数据库,如果它已经存在--运行一个脚本来创建整个数据库(表和内容,必要的用户)

但是,在卸载过程中,将删除所有内容,但不会删除数据库。

我测试了删除数据库的脚本,方法是在创建数据库之前运行它。它起作用了。我不能让它在卸载时运行。

这是我的wix sql:SqlDatabase标记:

代码语言:javascript
复制
    <!-- - - - - 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’。

我也尝试过:

代码语言:javascript
复制
      <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:组件:数据库;已安装:本地;请求:不存在;操作:空

有什么想法吗?

谢谢你,提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-04-14 02:37:35

FWIW,我不建议在卸载期间运行SQL脚本。没有比无法卸载更糟糕的了,因为某些SQL依赖项抛出了一个错误。此外,这是用户数据..。别管它了。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29611275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档