有没有办法检测并向innosetup脚本添加> NET可执行文件的依赖项?假设我有一个a.exe和b.dll。我的解决方案中的c.dll,因为a.exe正在使用这些dll。是否有一个工具可以查看可执行文件并将b.dll和c.dll作为文件添加到脚本中?
答案 0 :(得分:4)
通常,.NET应用程序的依赖项是VS已经复制到输出文件夹的DLL,以及框架本身。因此,通过简单的方法捕获所有非框架依赖项很容易:
[Files]
Source: bin\Release\MyApp.exe; DestDir: {app}; Flags: ignoreversion
Source: bin\Release\*.dll; DestDir: {app}; Flags: ignoreversion
通常你不需要任何更复杂的东西,除非你还依赖本机或COM库,它们不会被自动复制 - 但是你应该已经知道它们是什么了。
答案 1 :(得分:2)
在Inno Setup中没有这个工具 - 它看起来更像编程工作(C#...)而不是Inno脚本。
也许有一些(第三方)扩展可以做到这一点? 例如,请参阅此主题:How to find all dependencies of a .NET project?
Reflector(也是Dependency Walker)适用于已编译的.exe文件,但您需要动态执行此操作,这是我的想法:
创建加载 .csproj 文件的简单工具,并阅读引用节点。
引用保存为此(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.vcxproj 和 dotNetDll.csproj )并从中获取正确的输出(带路径)(使用dotNetDll有时是不够的。)
如果我误解了你的问题,你需要从Inno Setup检测并安装.net Framework,这不是问题(而且非常简单),但你的描述看起来有点不同。