Inno setup Inno安装程序-在安装过程中注销共享DLL

Inno setup Inno安装程序-在安装过程中注销共享DLL,inno-setup,Inno Setup,另见: 在Inno安装脚本的[Files]部分,我有一行: Source: {#InstallSource}\OldDll.dll; DestDir: {sys}; Flags: sharedfile regserver 应用程序的更新版本不再使用此DLL。在安装新版本时,我想做的是减少此DLL的共享文件锁计数,如果为零,则取消注册并删除它 最简单的方法是告诉用户在更新之前卸载应用程序的早期版本,但这意味着各种配置设置也将被删除,用户必须手动重新输入。是否可以自动执行DLL注销/删除过程?

另见:

在Inno安装脚本的[Files]部分,我有一行:

Source: {#InstallSource}\OldDll.dll; DestDir: {sys}; Flags: sharedfile regserver
应用程序的更新版本不再使用此DLL。在安装新版本时,我想做的是减少此DLL的共享文件锁计数,如果为零,则取消注册并删除它


最简单的方法是告诉用户在更新之前卸载应用程序的早期版本,但这意味着各种配置设置也将被删除,用户必须手动重新输入。是否可以自动执行DLL注销/删除过程?

而您可以执行此操作以注销和卸载DLL:

  • 呼叫
  • 如果返回true,则使用注销共享DLL并使用删除它
。。。它实际上会中断引用计数,因为它不会阻止卸载程序再次减少引用计数器。这是因为卸载程序和将处理它们

示例:如果您的DLL由应用程序共享,并且彼此共享-2个引用。运行更新后,计数器将减少到1。然后卸载应用程序,这会将计数器减少到0,并删除DLL=>另一个应用程序中断


因此,最终唯一真正正确的解决方案是在安装程序开始时运行卸载程序

只有在共享文件仍然存在时,才能有条件地执行此操作


但是,结果发现您并不需要卸载新版本的安装程序所共享的DLL。您只担心当新安装程序不再安装共享DLL时,其卸载程序也不会正确卸载它。但它会的,正是因为第一节提到的原因