Inno setup InitializeUninstall不使用链接设置运行

Inno setup InitializeUninstall不使用链接设置运行,inno-setup,Inno Setup,我的问题是初始化安装无法运行。 我有两种设置;设置A和设置B。 SetupB是由SetupA下载的可选组件,由SetupA使用Exec语句执行。 SetupA包含一个初始化安装过程。SetupB没有。 SetupB成功地将其安装信息附加到unins000.dat,因为后续卸载会删除所有文件。 仅当SetupB不是安装的一部分时,才会运行InitializeUninstall。当SetupB是安装的一部分时,不会执行它。要让它运行,我还需要做些什么吗?您的体系结构是错误的。不能对不同的安装程序使用

我的问题是初始化安装无法运行。 我有两种设置;设置A和设置B。 SetupB是由SetupA下载的可选组件,由SetupA使用Exec语句执行。 SetupA包含一个初始化安装过程。SetupB没有。 SetupB成功地将其安装信息附加到unins000.dat,因为后续卸载会删除所有文件。
仅当SetupB不是安装的一部分时,才会运行InitializeUninstall。当SetupB是安装的一部分时,不会执行它。要让它运行,我还需要做些什么吗?

您的体系结构是错误的。不能对不同的安装程序使用相同的AppId


相反,将安装程序设为卸载程序运行安装程序B卸载程序(如果找到)。当然,每个安装程序都必须有不同的AppId

经过进一步调查,SetupB似乎将某些内容放入unins000.dat文件中,导致SetupB/InitializeUninstall而不是SetupA/InitializeUninstall运行。SetupA是一个主要应用程序,SetupB只是添加了一个额外的功能。我需要SetupA/InitializeUninstall才能运行。因此两个安装程序的AppId相同?=它们共享unist*.dat?这是正确的。当SetupB运行时,unins000.exe似乎不会改变,但unins000.dat会变大。请注意,卸载确实会删除A和B安装的所有文件。我将日志语句放入A和B的InitializeUninstall中,并且在卸载过程中只运行了B。关于A下载和运行B的部分不相关。如果A和B都是先手动运行,然后手动运行,则会发生相同的行为。您可以使用两个具有相同AppID的设置进行尝试。如果这很重要,我的每个脚本都有CreateUninstallRegKey=no.Hmmm。对于仅添加更多文件的辅助设置,这是推荐的方法吗?附加功能运行得很好,只是它缩短了第一阶段安装程序中卸载过程的运行。如果我理解正确,您是说更改SetupB的AppID,并将代码添加到SetupA的卸载程序以运行SetupB的卸载程序。是的,这就是我的意思。我不认为有任何“推荐”的方法。但是你现在所做的根本不起作用。我正在努力。我发现即使InitializeUnitInstall返回False,DeInitializeUnitInstall也会启动。这似乎很奇怪。我使用InitializeUninstall测试Excel是否正在运行,如果正在运行,则中止卸载。我想我需要设置一个全局变量来告诉DeinitializeUninstall有关中止的信息。是的,您需要使用一个全局变量。或者改用新的。好建议。我已经取消了DeinitializeUninstall,而是在达到usPostUninstall时将它正在执行的操作移动到CurUninstallStepChanged。