WIX安装程序收到错误状态和序列错误

时间:2018-02-20 19:22:35

标签: wix windows-installer

我希望在完成完整安装后执行自定义操作。经历了这么多的网站,但没有得到它的工作。

<Binary Id="DepTypeCustomActionBinary" SourceFile="$(var.SolutionDir)\Proj.Setup\DepCustomAction.CA.dll"/>

<CustomAction Id="CheckDepType" BinaryKey="DepTypeCustomActionBinary" DllEntry="CustomAction1" Impersonate="no" Execute="deferred" Return="check" HideTarget="no" />

<InstallExecuteSequence>      
      <Custom Action="CheckDepType" After="InstallFinalize">NOT Installed</Custom>
    </InstallExecuteSequence>

以上是我的代码,我收到以下错误:

CheckDepType is a in-script custom action. It must be sequenced in between the InstallInitialize action and the InstallFinalize action in the InstallExecuteSequence table

1 个答案:

答案 0 :(得分:0)

我只会添加一个简短的答案,而不是添加太多评论。我不确定dscrt40.dll正在做什么 - 它是在安装期间用于某些运行时依赖性的文件吗?我不建议将您自己的文件安装到预先存在的文件夹中 - 如果这就是您正在做的事情。

我想您可以尝试使用RemoveFile construct让Windows Installer引擎在安装时删除有问题的文件,这样可以避免需要自定义操作。如果您首先通过Windows Installer组件安装要删除的文件,则不能执行此操作 - 然后可能会自行修复以便在之后将其恢复。

InstallFinalize之后无法对系统进行更改的自定义操作 - 数据库更改事务以InstallFinalize结束,并且InstallFinalize之后的自定义操作不再提升1}}(可以插入立即模式自定义操作,但除非您使用管理员权限运行,否则它们将失败 - 不要尝试 - 不可能依赖它)。您只能在InstallInitialize之后的InstallFinalize之后和InstallExecuteSequence之前插入更改自定义操作(延迟自定义操作)。

您应该知道,在InstallFiles操作运行后,文件将出现在磁盘上(技术上是第二次运行InstallExecuteSequence - 第一次运行 - 立即 - 只创建一个执行脚本,第二次运行 - 延迟 - 执行脚本),因此在运行此操作后原则上可以删除文件,但这样做没有任何意义。

  • 为什么需要删除此文件?
  • 您自己安装此文件还是预先存在的文件?