0

我正在使用 Installshield 2011 开发安装程序,项目类型是基本 MSI,我有自定义操作,它的排序方式应在卸载期间执行。这是我配置的自定义操作属性的附加快照。

用于卸载的附加自定义操作的快照

我面临的问题是在卸载期间未执行配置的自定义操作,最终安装的应用程序将不会被删除。

以下是详细日志记录的条目:

00532: (Unknown): InstallShield 11:01:17: Registering Msi Server...

00533: (Unknown): InstallShield 11:01:17: **Invoking script function MyFunction**

00534: (Unknown): InstallShield 11:01:17: **CallScriptFunctionFromMsiCA() ends**

00535: (Unknown): CustomAction NewCustomAction1 returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)

00536: (Unknown): Action ended 11:01:17: **NewCustomAction1. Return value 3.**

00537: (Unknown): Action ended 11:01:17: **INSTALL. Return value 3.**

00538: (Property): Property(S): DiskPrompt = [1]

00539: (Property): Property(S): UpgradeCode = {40AD9645-1459-4C32-8285-D1C0B163361D}

00540: (Property): Property(S): ProductCode = {84BDE810-2C23-48CA-A638-5B131DA3B57F}

我在这里错过了什么吗?

4

1 回答 1

2

我的第一个问题是您为什么要编写自定义操作?InstallShield 的内置自定义操作(XML 文件更改)已经能够在卸载时删除元素。我的第二个观察是 InstallScript 作为一种语言是可靠的,它缺乏对如何正确设计往往会导致问题的自定义操作的理解。我害怕:

Windows Installer 中自定义操作的安装阶段和脚本内执行选项

请务必在 InstallInitialize 和 InstallFinalize 之间的系统上下文中将所有修改系统的自定义操作安排为延迟。还要确保使用 CustomActionData 模式并在卸载被取消或失败时进行相应的回滚操作。否则,您可能会遇到应用程序已安装但标签丢失的情况。

当然,永远不要在已经存在的地方重新发明轮子。(XMLFileChanges) 它很少顺利。

于 2013-04-01T13:49:53.813 回答