2013-10-22 134 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 ==========