我正在尝试执行一个由 C# (.NET 3.5) 编写的自定义操作,该操作依赖于单个 DLL(也是 C# 3.5)。我在安装中包含了 .EXE 和 .DLL,并验证了它们是否被复制到安装位置。但是,每次我尝试运行自定义操作时,都会收到以下错误:
行动开始 7:21:16:InstallFinalize。错误 1721。此 Windows 安装程序包有问题。无法运行完成此安装所需的程序。请联系您的支持人员或软件包供应商。操作:UpgradeTo022,位置:C:\Program Files\Test\,命令:Upgrade-0.2.2.EXE MSI (s) (CC:38) [07:21:19:061]:产品:测试 -- 错误 1721 . 这个 Windows Installer 程序包有问题。无法运行完成此安装所需的程序。请联系您的支持人员或软件包供应商。操作:UpgradeTo022,位置:C:\Program Files\Test\,命令:Upgrade-0.2.2.EXE
自定义操作定义如下:
<CustomAction Id="UpgradeTo022"
Directory="INSTALLLOCATION"
Impersonate="no"
Execute="deferred"
ExeCommand='Upgrade-0.2.2.EXE'>
注意:自定义操作必须以提升的权限运行,因此延迟执行和 Impersonate="no" 属性。
安排如下:
<InstallExecuteSequence>
<Custom Action="UpgradeTo022" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
文件安装如下:
<Component Id="CMP_UpgradeCommon" Guid="8ECF5076-732E-4010-A33B-BE362D818949" Win64="yes">
<File Id="FILE_UpgradeCommonDLL"
Source="..\Upgrade\UpgradeCommon\bin\Debug\UpgradeCommon.dll" Vital="yes"/>
</Component>
我已经看到一些关于运行托管 EXE 的暗示是自定义操作和 MSis 的问题,但没有真正明确的答案。
我也尝试过只运行一个非常简单的没有依赖关系的 .EXE 作为自定义操作,并且在那里没有运气。
作为创建安装程序包的新手,我很可能要么尝试做一些不受支持的事情,要么错过一些简单的事情。
在此先感谢您提供解决此问题的任何指示。
JT。