7

के साथ एक प्रोजेक्ट में इंस्टॉलशील्ड सेटअप मेरे पास एक सी # क्लास लाइब्रेरी है जो संदर्भ System.Data.SQLite (from nuget) है। इस बिल्ड के बाद मेरे बिन फ़ोल्डर की संरचना है:विजुअल स्टूडियो - System.Data.SQLite

  • MyProject.dll
  • System.Data.SQLite.dll
  • 86/SQLite.Interop.dll
  • 64/SQLite.Interop .dll

System.Data.SQLiteSQLite.Interop चलाने के लिए की जरूरत है और सही dll रन टाइम पर पाया जाता है। हालांकि, जब मैं इंस्टॉलशील्ड के साथ सेटअप उत्पन्न करता हूं जिसमें प्रोजेक्ट प्राथमिक आउटपुट शामिल है, x86 और x64 फ़ोल्डर्स कॉपी नहीं किए जाते हैं और मेरा एप्लिकेशन चलाने में विफल रहता है।

प्राथमिक आउटपुट में x86 और x64 फ़ोल्डरों को शामिल करने के लिए विजुअल स्टूडियो को मजबूर करने का कोई तरीका है?

किसी भी तरह से रिश्तेदार पथ के साथ InstallShield में मैन्युअल रूप से फ़ोल्डर्स शामिल करने के लिए नहीं है?

मेरे पर्यावरण:

  • Visual Studio 2012 प्रोफेशनल
  • स्थापित करें शील्ड 2013 सीमित संस्करण (मुक्त)
  • System.Data.SQLite 1.0.96
+0

प्राथमिक आउटपुट की बजाय निर्भरता की तरह ध्वनि, लेकिन याद रखें कि उत्पादन समूह नियंत्रण के बजाय सुविधा के लिए हैं। अगर आप अपने सेटअप का पूर्ण नियंत्रण चाहते हैं, तो आप फ़ाइलों को स्थिर रूप से चुनने से बेहतर हैं। –

+0

दुर्भाग्यवश, x64 और x86 फ़ोल्डरों को Nuget पैकेज द्वारा प्रबंधित किया जाता है, इसलिए मुझे मिला एकमात्र तरीका एक पूर्ण पथ का उपयोग करना है। यह काम करता है, लेकिन प्रत्येक डेवलपर को अपने कंप्यूटर में इसे कॉन्फ़िगर करना होगा। अगर मैं एक सापेक्ष पथ का उपयोग कर सकता हूं तो अच्छा होगा लेकिन मुझे नहीं मिला कि मुफ्त संस्करण के साथ कैसे। – Rafael

+1

@ राफेल बस इतना आप जानते हैं। आप 'c: \ yourpath \ packages \ System.Data.SQLite.Core.1.0.94.0 \ build \ net40 \ x86 \ SQLite.Interop.dll' से' <ISProjectFolder> पर setup.isl फ़ाइल में मैन्युअल रूप से बदल सकते हैं। \ packages \ System.Data.SQLite.Core.1.0.94.0 \ build \ net40 \ x86 \ SQLite.Interop.dll' (या जहां कहीं भी आपके SQLite.Interop स्थित है) – Markus

उत्तर

0

हां, इंस्टाल के माध्यम से फ़ोल्डर जोड़ने/तैनात करने का एक तरीका है lShield। फाइल टैब के तहत आप फ़ाइलें/फ़ोल्डर जोड़ सकते हैं। इन फ़ाइलों को जोड़ने के दौरान आप इसमें सापेक्ष पथ भी सेट कर सकते हैं। बस पथ के साथ एक संपत्ति सेट करें और उस संपत्ति का उपयोग अपने सापेक्ष पथ में करें। तो जहां इन फ़ाइलों (डीएलएल के लिए संदर्भ स्थान) की प्रतिलिपि बनाना चाहते हैं, आप इंस्टॉलशेल्ड के माध्यम से उस फ़ोल्डर संरचना को जोड़ सकते हैं और आप उसमें फाइलें जोड़ सकते हैं।

0

मैं बस VS2013/Installshield LE का उपयोग कर एक ही समस्या में भाग गया; मैं बिल्ड मशीन के तहत SQLite.interop.dll के लिए x86 फ़ोल्डर नहीं बनाने के लिए मेरी मशीन पर NuGet पैकेज को बदलने का विकल्प समाप्त कर रहा हूं।

ऐसा करने के लिए, "प्रोजेक्ट \ System.Data.SQLite.Core.1.0.104.0 \ build" फ़ोल्डर को अपनी प्रोजेक्ट निर्देशिका के अंतर्गत देखें। फिर उस सबफ़ोल्डर को चुनें जिसे आप लक्षित कर रहे हैं .NET के संस्करण के लिए प्रासंगिक है, और एक पाठ संपादक में "System.Data.SQLite.Core.targets" फ़ाइल खोलें। आप "" खंड में "%(RecursiveDir)" EXCEPT के सभी संदर्भों को हटाना चाहेंगे। सहेजें, साफ करें और पुनर्निर्माण करें - इंटरऑप डीएल अब मुख्य निष्पादन योग्य/आदि के समान फ़ोल्डर में होना चाहिए, और इंस्टॉलशील्ड को इसे निर्भरता के रूप में स्वचालित रूप से शामिल करने में सक्षम होना चाहिए।

यदि यह सही जगह पर दिखाई नहीं देता है, तो एक अलग .NET संस्करण की .target फ़ाइल को संपादित करने का प्रयास करें जब तक आप सही हिट नहीं करते।

संबंधित मुद्दे