2013-10-22 135 views
4

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

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

我有一个DLL在我的VB.NET(2010)项目:TwinCAT.Ads.dll [已列入],有它自己的依赖:TcAds.dll [已没有任何地方包括在我的项目],这是一.NET程序集。在安装项目中包含文件依赖关系

我得到了编译器,以确保它在编译时将TcAds.dll放到bin输出文件夹中,作为现有项目添加到我的项目中,然后将其构建操作设置为“Embedded Resource”并将其设置为始终复制到Output目录。

现在我准备发布了,我做了一个windows安装项目。
请不要使用WIX或其他任何建议,这是我一直在努力。

问题是,这个遗弃的DLL不会作为依赖项出现,因此不会包含在安装程序中。安装后,程序运行,找不到DLL,炸弹出来。

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

当然,必须有一个简单的方法来确保您想要的任何文件都包含在安装direc保守党?

+0

我无法检查的权利,但你应该能够补充一点,“文件”,它应该被复制到输出文件夹 –

+0

咦,难道不是一个.NET程序集?我想知道为什么它不能被添加... –

+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 ==========