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

时间:2013-10-22 22:34:55

标签: visual-studio-2010 dll dependencies windows-installer

如何确保项目中的文件包含在安装程序创建的应用程序目录中?

  • 或者换句话说:如何在安装项目中包含文件依赖项?

我的VB.NET(2010)项目中有一个DLL:TwinCAT.Ads.dll [has include]有自己的依赖:TcAds.dll [在我的项目中没有包含任何内容],这是< strong> .NET程序集。

我得到了编译器,以确保在编译时将TcAds.dll吐出到bin输出文件夹中,方法是将其作为现有项添加到我的项目中,然后将其构建操作设置为“Embedded Resource”并将其设置为copy总是输出目录。

现在我已准备好发布,我已经制作了一个Windows安装项目 请不要使用WIX或其他任何建议,这是我必须使用的。

问题是DLL的这个抛弃不会显示为依赖关系,因此不会包含在安装程序中。安装完成后,程序运行,找不到DLL,炸弹出来。

  • 我尝试将它作为资源添加到项目中无济于事。 (项目 - 财产 - 资源)
  • 无法设置编译的构建操作(它给出错误“无法打开模块文件......”)
  • 构建操作“资源”甚至不包含在bin文件夹中,更不用说安装程序了
  • 添加它作为参考 NOT 工作(它给出错误“无法添加对...的引用。请确保该文件可访问,并且它是有效的程序集或COM组件。“)

当然必须有一种简单的方法来确保您想要的任何文件都包含在安装目录中?

1 个答案:

答案 0 :(得分:0)

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

enter image description here

我创建了一个安装项目并添加了c ++ ddl文件进行输出。它在安装项目文件中有以下部分。您可以通过这种方式轻松地将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 ==========