2009-04-20 9 views
5

विजुअल स्टूडियो 2008 का उपयोग करके, मैंने एक सी ++ Win32 प्रोजेक्ट बनाया। कार्यक्रम को रिलीज करने के लिए, मैंने एक ही समाधान के भीतर एक विजुअल स्टूडियो सेटअप प्रोजेक्ट बनाया।मेरे विजुअल स्टूडियो Win32 प्रोजेक्ट को स्थापित करने के लिए .NET 3.5 SP1 क्यों आवश्यक है?

setup.exe मेरे उपयोगकर्ताओं को .NET 3.5 SP1 स्थापित करने के लिए संकेत देता है, जो प्रायः 15+ मिनट इंस्टॉल होता है और केवल व्यवस्थापक स्तर खातों की अनुमति देता है। अगर वे "गलत ढांचे" की रेखाओं के साथ कोई त्रुटि नहीं है। मैं उलझन में हूं कि मेरे प्रोजेक्ट में .NET 3.5 SP1 की आवश्यकता है। मुझे संदेह है क्योंकि यह मेरा पीसी ढांचा है ... क्या यह विस्तार करने का कोई तरीका है कि यह किस ढांचे पर चलेगा?

कोड ज्यादातर Win32 API कॉल है। शायद ज़रुरत पड़े, यहाँ मेरी निर्भरता और #includes हैं:

gdiplus.lib 
comctl32.lib 
Winmm.lib 
d3d9.lib 

(। सेटअप परियोजना स्वचालित रूप से, comdlg32.dll जोड़ा तो मुझसे कहता है उसे बहिष्कृत)

#include <windows.h> 
#include <tchar.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <iostream> 
#include <fstream> 
#include <string.h> 

#include <commctrl.h> 
#include <process.h> 
#include <sstream> 
#include <math.h> 
#include <d3d9.h> 
#include <time.h> 
#include <gdiplus.h> 

मेरा अनुमान है कि के माध्यम से कहीं है windows.h एक WIN_VER या समान संस्करण सेटिंग है जो .NET 3.5 SP1 पर सेट है, और यह वह जगह है जहां निर्भरता आती है। यदि ऐसा है, और मुझे एक अलग संस्करण को परिभाषित करने की ज़रूरत है, तो मुझे अधिकतम शामिल करने के लिए/मैं कैसे और कितनी दूर तक जा सकता हूं, इस बारे में हर किसी की सलाह सुनना अच्छा लगेगा।

+0

संबंधित के लिए पूछ छोड़ [? क्यों देशी सी ++ परियोजनाओं एक TargetFrameworkVersion की क्या ज़रूरत है] * (http://stackoverflow.com/ प्रश्न/21845605) * –

उत्तर

3

वीएस 2008 में डिफ़ॉल्ट लक्ष्य ढांचा .NET 3.5 है।

सामान्य गुण पृष्ठ पर सी ++ के लिए एक "लक्षित फ्रेमवर्क" ड्रॉप डाउन है, लेकिन परीक्षण प्रोजेक्ट पर मैंने इसे गहरा कर दिया है, इसलिए ऐसा लगता है कि परियोजना के निर्माण के बाद इसे बदला नहीं जा सकता है।

मैंने एक दूसरा सी ++ प्रोजेक्ट बनाया और नए प्रोजेक्ट डायलॉग से 2.0 टेम्पलेट का चयन किया और 2.0 "लक्षित फ्रेमवर्क" में 2.0 था।

तो यदि आप ढांचे के निचले संस्करण को लक्षित करना चाहते हैं तो ऐसा लगता है कि आपको अपनी परियोजना को पहले स्थान पर सही तरीके से बनाना होगा।

संपादित करें: ढांचे की जो संस्करण के रूप में आप को लक्षित करना चाहिए - यह सब निर्भर करता है

आप 3.0 या 3.5 सुविधाओं का उपयोग करने की आवश्यकता है (!)? यदि नहीं तो 2.0 के लिए जाओ। यदि आप करते हैं तो उसको चुनें और डाउनलोड का हिट लें। मैं यह नहीं कह सकता कि यह कितना संभव है कि उपयोगकर्ता के किसी भी वर्ग के पास एक विशेष संस्करण स्थापित होगा। जैसे ही समय चल रहा है, उतनी ही संभावना है कि उनके पास 3.5 इंस्टॉल होंगे क्योंकि अन्य ऐप्स को इसकी आवश्यकता होगी।

+0

ठीक है, तो मैं गलत साबित होने से खुश हूं, ठीक है, अब मैं इसे देखता हूं। धन्यवाद। दुर्भाग्य से यह गहरा हुआ है, इसलिए मुझे लगता है कि मैं एक नई परियोजना शुरू करूंगा और सब कुछ कॉपी कर दूंगा। मेरे सभी उपयोगकर्ताओं के पास विंडोज एक्सपी पेशेवर होगा, क्या किसी को पता है कि मुझे किस लक्ष्य ढांचे के लिए जाना चाहिए? –

+0

कौन सा संस्करण: मुझे वास्तव में .NET सुविधाओं की आवश्यकता नहीं है (जो मुझे पता है - यह Win32 एपीआई कोड है), लेकिन दृश्य स्टूडियो 2008 मुझे .NET 2.0, 3.0, या 3.5 चुनने के लिए सीमित करता है। इसलिए मैं सबसे पुराने, 2.0 के लिए जाऊंगा, उम्मीद कर रहा हूं कि या तो विंडोज एक्सपी पेशेवर, माइक्रोसॉफ्ट ऑफिस 2003, या इंटरनेट एक्सप्लोरर 6 (सभी लक्षित उपयोगकर्ता के पीसी पर) कम से कम 2.0 लेते हैं। यदि नहीं, तो वे उपयोगकर्ता अपडेट डाउनलोड कर सकते हैं। एक बार फिर धन्यवाद! –

+0

क्या आप इसे स्वीकार कर सकते हैं;) – ChrisF

3

क्या आपने इंस्टॉलर प्रोजेक्ट पर पूर्वापेक्षाएँ की जांच की है? (राइट क्लिक ->गुण; प्रीरेक्साइट्स बटन)।

मैंने बनाए गए परीक्षण प्रोजेक्ट पर, .NET Framework डिफ़ॉल्ट रूप से चुना जाता है (मुझे लगता है कि यह वास्तव में स्थापित होने वाली परियोजनाओं का विश्लेषण नहीं करता है, क्योंकि इसमें डिफ़ॉल्ट रूप से C++ रनटाइम लाइब्रेरी शामिल नहीं है।)

+1

उत्तर के लिए धन्यवाद। इंस्टॉलर प्रोजेक्ट पर पूर्व-आवश्यकताएं वास्तव में नेट फ्रेमवर्क 3.5 एसपी 1 शामिल हैं। हालांकि, अगर मैं इसे हटा देता हूं तो प्रोग्राम चलाने पर मुझे "गलत ढांचा" त्रुटि मिल जाएगी। क्रिसफ का जवाब मुझे लगता है कि मेरी समस्या है, कि जब मैंने प्रोजेक्ट बनाया, तो मैंने लक्ष्य 3.5 के रूप में .NET 3.5 को डिफॉल्ट किया .. और किसी कारण से इसे सृजन के बाद सी ++ में बदला नहीं जा सकता है। –

+0

आपने किस टेम्पलेट को एप्लिकेशन बनाया था? क्या यह किसी भी/clr (या समान) स्विच का उपयोग कर रहा है? क्या आपने वास्तविक निर्भरताओं को निर्धारित करने के लिए depnds.exe का उपयोग करने का प्रयास किया है? –

+0

मैंने "Win32 प्रोजेक्ट" टेम्पलेट का उपयोग किया और फिर प्रोजेक्ट सेटअप विज़ार्ड में "खाली प्रोजेक्ट" चुना गया। कंपाइलर स्विच "/ O2/Oi/GL/D" _MBCS "/ FD/EHsc/MD/Gy/Fo" रिलीज \\ "/Fd"Release\vc90.pdb"/W3/nologo/c/ज़ी/टीपी/त्रुटि रिपोर्ट: प्रॉम्प्ट " जिसमें से मुझे विश्वास नहीं है कि कोई भी सामान्य भाषा रनटाइम से संबंधित है। मैं अब depend.exe को स्थापित कर रहा हूं (अनुमान लगाएं कि यह एक डिफ़ॉल्ट इंस्टॉल नहीं था, इसे दृश्य स्टूडियो के कस्टम इंस्टॉल के तहत निर्दिष्ट करना होगा) और उसमें देखेंगे। धन्यवाद - जेफ –

0

ठीक है, सी # परियोजनाओं के लिए, यदि आप समाधान एक्सप्लोरर में प्रोजेक्ट फ़ाइल पर राइट क्लिक करते हैं, और गुणों पर जाते हैं, तो आप "एप्लिकेशन" टैब पर लक्ष्य फ्रेमवर्क बदल सकते हैं। सी ++ परियोजना गुणों में कुछ ऐसा ही हो सकता है।

3

मेरे मामले में, मैंने यूआई को मुझे जाने वाली सभी समस्याओं को ठीक किया, पूर्वापेक्षाएँ, सामान्य गुण ... कोई फर्क नहीं पड़ता, अभी भी वह चाहता था .NET 3.5।

तो, मैंने sldit में vdproj फ़ाइल खोल दी और इसे सीधे संशोधित किया।

"ExternalPersistence" 
    { 
     "LaunchCondition" 
     { 
      "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_38ABBBBC51344AFFA38F2922DFFFE5B5" 
      { 
      "Name" = "8:.NET Framework" 
      "Message" = "8:[VSDNETMSG]" 
      "Version" = "8:3.5.30729" 
      "AllowLaterVersions" = "11:FALSE" 
      "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617" 
      } 
     } 
    } 

बदल दिया

"ExternalPersistence" 
    { 
    } 

करने और यह .NET 3.5

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