1

我正在为产品创建一个 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>

正如我所说,“核心”数据库已创建,所有表都是在安装时创建的。当我去卸载时,虽然没有任何东西被删除,但如果我进入 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)
4

1 回答 1

1

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

我个人不会在卸载时删除数据库。它们包含用户数据,如果用户知道他们不再需要它,可以手动清理它们。

于 2019-03-09T12:35:37.783 回答