我有一个应用程序(让我们称之为A)从插件夹中加载DLL插件。我创建了一个插件dll(让我们称之为B)。我的插件dll是用C#编写的,并且有一些依赖项,如CEFSHARP DLL。如果我将所有CefSharp DLL所需的依赖项复制到Application A文件夹,则应用程序A可以加载我的插件dll B的唯一方法。我的问题是:
如何制作安装设置文件,以便将某些文件夹安装必要的依赖项,而应用程序A会知道它们在哪里?插件B在安装过程中不必转移到Plugins文件夹。它甚至可能吗?
提前致谢!
答案 0 :(得分:1)
如果应用程序实现得很好,它应该带有app.config
(这是Visual Studio中的名称)或myapp.exe.config
(编译后的名称)文件,用于搜索依赖的DLL插件文件夹,如
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="plugins" />
</assemblyBinding>
</runtime>
</configuration>
然后,您的插件将并排放置所有依赖项,并且无需将它们放入应用程序的安装目录中。
使用InnoSetup,您可以按照以下方式执行此操作:
plugins
子目录以下是InnoSetup脚本的相关行:
[Setup]
DefaultDirName={pf}\App A
[Files]
Source: "./myplugin.dll"; DestDir: "{app}/plugins"; Flags: ignoreversion
Source: "./dependency.dll"; DestDir: "{app}"; Flags: ignoreversion