DropOnUninstall不会在SqlDatabase标记中删除数据库

时间:2019-03-08 13:23:57

标签: wix wix3.11

我正在为产品创建WiX安装程序,它需要创建数据库并且某些表是MSSQL。一切似乎都可以正常安装,但卸载后不会丢失任何东西。

这是所有创建发生的部分(已更改为通用名称):

<sql:SqlDatabase Id="CoreDatabase" Server="[ComputerName]" Instance="[SQLINSTANCES]" Database="CORE" 
                     CreateOnInstall="yes" DropOnUninstall="yes" ContinueOnError="yes">
<!-- Add individual tables -->
<sql:SqlScript Id="CreateTable1" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table1" />
<sql:SqlScript Id="CreateTable2" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table2" />
<sql:SqlScript Id="CreateTable3" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table3" />
<sql:SqlScript Id="CreateTable4" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table4" />
<sql:SqlScript Id="CreateTable5" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table5" />
<sql:SqlScript Id="CraeteTable6" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table6" />
<sql:SqlScript Id="CreateTable7" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table7" />
<sql:SqlScript Id="CreateTable8" ExecuteOnInstall="yes" ContinueOnError="yes" BinaryKey="Table8" />
</sql:SqlDatabase>

正如我所说,“ Core”数据库已创建,所有表均在安装时创建。当我卸载但没有删除任何东西时,如果我进入SQL Server Management Studio,一切仍然存在。

这是MSI日志的输出,尽管它似乎没有给我很多有用的信息。

MSI (s) (B4:74) [13:28:44:865]: Executing op: ActionStart(Name=DropDatabase,Description=Dropping Databases,)
MSI (s) (B4:74) [13:28:44:867]: Executing op: CustomActionSchedule(Action=DropDatabase,ActionType=25601,Source=BinaryData,Target=**********,CustomActionData=**********)
MSI (s) (B4:5C) [13:28:44:875]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI3217.tmp, Entrypoint: DropDatabase
DropDatabase:  Error 0x80004005: failed to drop to database: 'CORE', error: unknown error
MSI (s) (B4!E4) [13:29:16:108]: Product: Core -- Error 26202. Error -2147467259: failed to drop SQL database: CORE, error detail: unknown error.

MSI (c) (C4:6C) [13:29:02:518]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

Error 26202. Error -2147467259: failed to drop SQL database: CORE, error detail: unknown error.
CustomAction DropDatabase returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

1 个答案:

答案 0 :(得分:1)

hResult 0x80004005是未指定的错误。这里没有足够的信息可以确定原因。我会怀疑权限或数据库锁定。

我个人不卸载数据库。它们包含用户数据,如果用户知道不再需要它们,可以手动进行清理。