2009-10-19 14 views
6

मैं एक सी ++ प्रोग्राम विकसित करता हूं जो एडोब फ्लैश का उपयोग कर सकता है, हालांकि यह आवश्यक नहीं है।
मैं फ्लैश ऑब्जेक्ट बनाने के लिए CoCreateInstance का उपयोग करता हूं, और यदि यह विफल रहता है, तो मुझे पता है कि फ़्लैश स्थापित नहीं है इसलिए मैं इसका उपयोग नहीं करता हूं।
हालांकि, Vista में (और मुझे विंडोज 7 भी लगता है), जब फ्लैश स्थापित नहीं होता है, तो एप्लिकेशन छोड़ने के बाद, "प्रोग्राम संगतता सहायक" एक संदेश को पॉप करता है जिसमें कहा गया है कि "इस प्रोग्राम को एक अनुपलब्ध विंडोज घटक की आवश्यकता है" निर्दिष्ट करना flash.ocx।

क्या इस संदेश को प्रदर्शित होने से रोकने का कोई तरीका है? मैं किसी भी उपयोगकर्ता को फ़्लैश स्थापित करने के लिए मजबूर नहीं करना चाहता (विशेष रूप से क्योंकि यह आईई एक्टिवैक्स है, और फ़ायरफ़ॉक्स उपयोगकर्ता इसे इंस्टॉल नहीं कर सकते हैं), और मेरा एप्लिकेशन फ्लैश के बिना अच्छी तरह से काम कर सकता है।
प्लस यह संदेश वास्तव में परेशान है जब यह हर रन के बाद दिखाई देता है।
मेरा मतलब यह नहीं है कि उपयोगकर्ता की मशीन पर पीसीए को अक्षम कर दिया जाए, लेकिन सभी मशीनों पर प्रोग्रामेटिक रूप से इस विशिष्ट उपस्थिति को अक्षम कर दें।मैं विस्टा (और विंडोज 7) में "प्रोग्राम संगतता सहायक" प्रोग्रामेटिक रूप से प्रदर्शित होने से कैसे रोकूं?

कोई विचार?
धन्यवाद

[संपादित करें:]

मैं शे के नेतृत्व (धन्यवाद) पीछा किया, और मेरे अपने के कुछ और खुदाई किया था।

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
    <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" uiAccess="false"> 
     </requestedExecutionLevel> 
    </requestedPrivileges> 
    </security> 
</trustInfo> 

(यह भी देखें:: msdn.microsoft.com/en-us/library/bb756929.aspx) मैं एप्लिकेशन की मेनिफेस्ट के लिए निम्न एक्सएमएल जोड़ा
यह विंडोज 7 पर एक ही समस्या को हल करने

विस्टा 64 पर समस्या हल हो, मैं निम्नलिखित जोड़ा :

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
    <!--The ID below indicates application support for Windows Vista --> 
    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
    <!--The ID below indicates application support for Windows 7 --> 
    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
    </application> 
</compatibility> 

(यह भी देखें: blogs.msdn.com/yvesdolc/archive/2009/09/22/the-new-compatibility-section-in-the-application-manifest.aspx)

हल विंडोज 7

लेकिन किसी कारण से, यह अभी भी विस्टा 32 में होता है ...

मैं भी संपादन विशिष्ट DLL जो समस्या का कारण बनता है के प्रकट करने की कोशिश की है, लेकिन यह कोई प्रभाव नहीं पड़ा। केवल निष्पादन योग्य के प्रकट होने से ही समस्या प्रभावित हुई।

तो ... Vista 32?

उत्तर

2

here से स्निपेट (स्थापना के बारे में वार्ता लेकिन आपके मामले के लिए प्रासंगिक)

मैं अपने सेटअप के लिए कार्यक्रम संगतता सहायक से बाहर निकल सकते?

आदेश प्रदर्शित होने से कार्यक्रम संगतता सहायक रोकने के लिए, आप एक एम्बेडेड प्रकट है कि आपके सेटअप निष्पादन के लिए एक का अनुरोध निष्पादन स्तर निर्दिष्ट शामिल करना चाहिए। यदि आप सेटअप को स्वयं निकालने वाले पैकेज में निष्पादन योग्य सेटअप करते हैं, तो आपको स्वयं निकालने वाले पैकेज में एम्बेडेड मेनिफेस्ट भी शामिल करना होगा।एक बार जब आप ऐसा करते हैं, तो Windows Vista आपके सेटअप को Windows Vista-aware के रूप में सेट करेगा, और यह विफलता के बाद बाहर निकलने पर रद्दीकरण के बाद पीसीए संवाद नहीं दिखाएगा।

+0

त्वरित उत्तर के लिए धन्यवाद। मैंने आपके नेतृत्व का पालन किया, लेकिन समस्या पूरी तरह से हल नहीं हुई। उपरोक्त संपादित प्रश्न देखें। – Asaf