1

有没有办法检测 >NET 可执行文件的依赖项并将其添加到 innosetup 脚本中?假设我有 a.exe 和 b.dll。c.dll 在我的解决方案中,因为 a.exe 正在使用这些 dll。有没有工具可以查看可执行文件并将 b.dll 和 c.dll 作为文件添加到脚本中?

4

2 回答 2

5

通常 .NET 应用程序的依赖项是 VS 已经复制到输出文件夹中的 DLL,以及框架本身。所以很容易用一个简单的方法捕获所有非框架依赖:

[Files]
Source: bin\Release\MyApp.exe; DestDir: {app}; Flags: ignoreversion
Source: bin\Release\*.dll; DestDir: {app}; Flags: ignoreversion

通常,您不需要任何更复杂的东西,除非您还依赖本机或 COM 库,它们不会自动复制——但您应该已经知道它们是什么。

于 2013-11-06T20:07:21.647 回答
2

Inno Setup 中没有用于此目的的工具 - 它看起来更像是编程工作 (C#...) 而不是 Inno 脚本。

也许有一些(第 3 方)扩展可以做到这一点?例如,请参阅此主题:如何查找 .NET 项目的所有依赖项?

Reflector(也是 Dependency Walker)适用于已编译的 .exe 文件,但您需要即时执行此操作,所以这是我的想法:

创建加载.csproj文件并读取References节点的简单工具。

引用保存为这样(CRefDll 是 C 语言项目,dotNetDll 是 .net 库):

<ProjectReference Include="..\CRefDll\CRefDll.vcxproj">
  <Project>{26BB3110-CF72-4A1A-B1AC-1ADA0CCE41C4}</Project>
  <Name>CRefDll</Name>
</ProjectReference>
<ProjectReference Include="..\dotNetDll\dotNetDll.csproj">
  <Project>{14A56846-4ADA-421D-9F49-380CA20A7A63}</Project>
  <Name>dotNetDll</Name>
</ProjectReference>

因此,该工具应加载此节点中的所有元素(文件CRefDll.vcxprojdotNetDll.csproj)并简单地从它们获取正确的输出(带路径)(有时使用 dotNetDll 是不够的)。

如果我误解了您的问题,并且您需要从 Inno Setup 检测并安装 .net Framework,这不是问题(而且非常简单),但您的描述看起来略有不同。

于 2013-11-06T05:13:01.060 回答