在安装程序项目中包含文件依赖项

5
如何确保项目中的文件被包含在安装程序创建的应用程序目录中?
或者换句话说:如何在安装程序中包含文件依赖项?
我的VB.NET(2010)项目中有一个DLL:TwinCAT.Ads.dll [已经包括],它有自己的依赖项:TcAds.dll [在我的项目中没有任何包括],这不是.NET程序集。
我通过将其作为现有项目添加,并将其生成操作设置为“嵌入资源”并设置为始终复制到输出目录来让编译器确保在编译时将TcAds.dll放入bin输出文件夹中。
现在我准备发布,我做了一个Windows安装程序。 请不要建议使用WIX或其他东西,这就是我需要处理的。
问题是这个被排斥在外的DLL不会出现为依赖项,因此不会被包含在安装程序中。安装后,程序运行,找不到DLL,崩溃。
我尝试将其添加为资源到项目中,但无济于事(项目-属性-资源)。
不能将其生成操作设置为编译(它会给出错误“无法打开模块文件...”)。
生成操作“资源”甚至不会使它被包括在bin文件夹中,更不用说安装程序了。
将其添加为引用不起作用(它会给出错误“无法添加对...的引用。请确保该文件可访问,并且是有效的程序集或COM组件。”)。
肯定有一种简单的方法来确保您想要的任何文件都包含在安装目录中?

我现在无法检查,但你应该能够添加“文件”,这些文件将被复制到输出文件夹中。 - Iłya Bursov
哎呀,这不是一个.NET程序集吗?我想知道为什么它不能被添加... - Jeff B
最近我重新审视了这个项目,我们最终选择了Advanced Installer。所以我放弃了。如果有人能解释为什么不可能(如果确实是这种情况),我也会考虑满足赏金要求。也许有一个权威的参考资料。 - Scott Solmer
1个回答

2

您可以将任意文件添加到安装程序项目中。

enter image description here

我创建了一个安装程序项目,并将C++ DLL文件添加到输出中。在安装程序项目文件中,它有以下部分。您可以通过这种方式轻松地将DLL文件添加到您的项目中。如果需要,您可以编写后构建脚本以将此文件复制到适当的位置,以便安装程序项目会找到它。

"File"
        {
            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_06335985DF0F4EF3A600861437AA6CDF"
            {
            "SourcePath" = "8:..\\Debug\\CppWin32.dll"
            "TargetName" = "8:CppWin32.dll"
            "Tag" = "8:"
            "Folder" = "8:_1E4113F2F81040508FD1CDA54F242F25"
            "Condition" = "8:"
            "Transitive" = "11:FALSE"
            "Vital" = "11:TRUE"
            "ReadOnly" = "11:FALSE"
            "Hidden" = "11:FALSE"
            "System" = "11:FALSE"
            "Permanent" = "11:FALSE"
            "SharedLegacy" = "11:FALSE"
            "PackageAs" = "3:1"
            "Register" = "3:1"
            "Exclude" = "11:FALSE"
            "IsDependency" = "11:FALSE"
            "IsolateTo" = "8:"
            }
        }

查看我的构建输出。

------ Build started: Project: ConsoleApplication1, Configuration: Debug x86 ------
  ConsoleApplication1 -> P:\denemeler\setupDeneme\Setup1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
------ Starting pre-build validation for project 'Setup1' ------ 
------ Pre-build validation for project 'Setup1' completed ------
------ Build started: Project: Setup1, Configuration: Debug ------
Building file 'P:\denemeler\setupDeneme\Setup1\Setup1\Debug\Setup1.msi'...
Packaging file 'CppWin32.dll'...
Packaging file 'ConsoleApplication1.exe'...
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接