在使用Inno Setup安装的两个应用程序之间共享已注册的.net程序集



我有应用程序a

  • [Run]部分我有两个条目:

    Filename: "{dotnet40}regasm.exe"; 
    Parameters: "MSAToolsLibrary_x86.dll /codebase"; 
    WorkingDir: "{app}"; Flags: runhidden
    Filename: "{dotnet4064}regasm.exe"; 
    Parameters: "MSAToolsLibrary_x64.dll /codebase"; 
    WorkingDir: "{app}"; Flags: runhidden; Check: IsWin64
    
  • [UninstallRun]中我有这两个条目:

    Filename: {dotnet40}regasm.exe; 
    Parameters: /u MSAToolsLibrary_x86.dll; 
    WorkingDir: {app}; Flags: runhidden; 
    RunOnceId: "Unregister MSA Tools Library (32 bit)";
    Filename: {dotnet4064}regasm.exe; 
    Parameters: /u MSAToolsLibrary_x64.dll; 
    WorkingDir: {app}; Flags: runhidden; 
    RunOnceId: "Unregister MSA Tools Library (64 bit)"; Check: IsWin64;
    

现在,我有应用程序B,我希望它使用相同的DLL。我明白,这是足够安全的,简单地执行[Run]进入再次。它只是意味着它将指向DLL的应用程序B副本。应该没问题。

我关心的是卸载。如果你安装了两个,然后卸载了一个,那么另一个仍然在使用DLL,所以它仍然需要注册,但可能重新注册到其他应用程序的位置,反之亦然。

我不知道该怎么做。

  • 将文件安装到共享位置
  • 保持引用计数
  • 只在引用计数为0时注销。

相关内容

最新更新