在使用 Inno Setup 安装的两个应用程序之间共享注册的 .NET 程序集
Share registered .NET assembly between two applications installed with Inno Setup
我有应用程序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,因此它仍需要注册,但可能会重新注册到其他应用程序位置,反之亦然。
我不知道该怎么做。
- 将文件安装到共享位置。
- 保持引用计数。
- 仅当引用计数达到零时注销。
我有应用程序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,因此它仍需要注册,但可能会重新注册到其他应用程序位置,反之亦然。
我不知道该怎么做。
- 将文件安装到共享位置。
- 保持引用计数。
- 仅当引用计数达到零时注销。