我正在为产品创建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)
答案 0 :(得分:1)
hResult 0x80004005是未指定的错误。这里没有足够的信息可以确定原因。我会怀疑权限或数据库锁定。
我个人不卸载数据库。它们包含用户数据,如果用户知道不再需要它们,可以手动进行清理。