【问题标题】:RollBack Installation if custom action fails [After InstallFinalise] -Basic Msi -Installshield 2012如果自定义操作失败,则回滚安装 [After InstallFinalise] -Basic Msi -Installshield 2012
【发布时间】:2012-09-30 19:54:42
【问题描述】:

我正在使用 installshield 2012 spring Professional 创建一个 basic msi 安装程序,这里我有一个自定义对话框来从用户那里收集一些数据,我称之为自定义dll 操作在安装文件夹中创建数据库。

我有一个计划的 dll 自定义操作来运行 InstallFinalise 之后,我想检查 dll 的返回值,如果该值指示失败,我需要中止并回滚安装过程。

我已经设法捕捉到错误并中止安装,但问题在于回滚。现在安装中止但文件已经创建。如何让安装回滚?有可能..有什么想法吗??

【问题讨论】:

  • 我认为如果您从操作中返回非零代码,这应该会自动发生。您的操作的设置是什么?可能你需要设置检查返回码。
  • 只有在 installfinalise 之前返回错误时,基于错误的回滚操作才会自动起作用,但问题是在 installfinalise 之前,文件和文件夹没有创建,所以我正在执行installfinalise 之后的 dll 动作 ..
  • 输入错误的安装最终确定为安装文件 .. mybad !! :(
  • 我知道了。事实是我有点注定要使用 installshield 2008 并且我看到了卸载的一些问题 - 如果安装位置不是 ASCII 路径卸载不会从某些组件中删除某些文件。这就是我编写自己的自定义操作来清理文件的原因。我当然希望这个问题在以后的软件版本中得到解决

标签: installshield installshield-2012 basic-msi


【解决方案1】:

InstallFinalize 后无法回滚。 InstallInitialize 和 InstallFinalize 标记了 windows 安装程序事务的边界。

我建议阅读和理解:

Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer

【讨论】:

  • 我知道这是不可能的,我只是想要其他可能的解决方案,例如删除文件和文件夹或从安装程序自动启动卸载的自定义操作..
猜你喜欢
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
相关资源
最近更新 更多