这是我关于该主题的第二个问题,但我在互联网和书籍中找不到答案。 我坚持认为最简单的事情不应该存在问题,但不幸的是它会发生。
我必须为安装/升级/卸载过程准备托管的引导程序。 我在其中做了一些自定义操作,但是我仅在需要时处理了如何运行它们。但是,让我们想象一下在升级过程中安装新软件包失败的情况。以我的理解,回滚期间的默认行为应为卸载新版本并还原旧版本,但是不会发生。而且,当我转到installername_rollback.log时,它显示卸载开始,这意味着它将运行我的所有卸载CA,例如删除整个文件夹,因此,不仅我没有安装新版本,而且还删除了整个文件夹仅应在卸载时将其删除。我的解决方案是在引导程序检测到回滚时在bootstrapper上添加新属性,然后将其传递给msi并保护我的CA免于运行,但是我不知道这是否是处理该问题的好方法。
我尝试在InstallInitialize,InstallExecute,InstallExecuteAgain之后设置MajorUpgrade,但是它没有任何改变-在升级过程中,如果失败,我的旧版本将不会恢复。
我不知道如何解决该问题以及目前可能存在的问题。也许我应该计划在某个地方用Bootstrapper或MSI(以重新安装旧版本)进行维修,但是在哪里以及如何进行维修?
感谢您的时间和事先的帮助。