win-universal-app - डेस्कटॉप ऐप्स में UWP की सीमाएं




windows-10 (2)

"Win32 डेस्कटॉप ऐप" वाक्यांश एक गलत परिभाषा है क्योंकि Win32 API प्रोग्रामिंग मॉडल विंडोज NT 3.1 के बाद से आसपास है। यह दो दशकों में दर्जनों विकास भाषाओं और यूआई फ्रेमवर्क को भी कवर कर सकता है।

यहां प्रमुख UWP अंतरों का त्वरित अवलोकन दिया गया है:

  • एपीआई सतह क्षेत्र। UWP प्लेटफॉर्म कई का समर्थन करता है, लेकिन सभी Win32 और COM API का नहीं, और नए API का परिचय देता है। यदि आपका "Win32 डेस्कटॉप ऐप" ज्यादातर ANSI APIs का उपयोग कर रहा है जो कि Windows 95 में वापस आते हैं, तो आपके पास करने के लिए बहुत सारे अपडेट हैं। यदि आप ज्यादातर विंडोज विस्टा युग यूनिकोड एपीआई का उपयोग कर रहे हैं, तो बहुत सारा सामान "बस काम करता है"। Windows रनटाइम ऐप्स (सिस्टम) के लिए Win32 और COM API देखें।

  • सुरक्षा संदर्भ। UWP प्लेटफ़ॉर्म AppContainer सुरक्षा संदर्भ में अनुप्रयोग चलाता है। Windows Vista पर "Win32 डेस्कटॉप ऐप्स" या बाद में "मानक उपयोगकर्ता" या "व्यवस्थापक" के रूप में चलते हैं। UWP ऐप्स के पास "मानक उपयोगकर्ता" की तुलना में कम अधिकार हैं और कभी भी "प्रशासक" के रूप में नहीं चल सकते हैं। UWP एप्लिकेशन उपयोगकर्ता से अनुमति के साथ कुछ और अधिकार प्राप्त करने के लिए अतिरिक्त capabilities का अनुरोध कर सकते हैं, लेकिन सिस्टम और उपयोगकर्ता डेटा तक सीमित पहुंच रखते हैं। उदाहरण के लिए, आप अधिकांश फ़ाइल सिस्टम, केवल आपके इंस्टॉल किए गए स्थान, एक पृथक एप्लिकेशन डेटा फ़ोल्डर और एक अलग अस्थायी फ़ाइल फ़ोल्डर को नहीं पढ़ सकते हैं। फ़ाइल एक्सेस और अनुमतियां (विंडोज रनटाइम ऐप्स) देखें । इसका मतलब यह भी है कि यूडब्ल्यूपी ऐप्स के पास उपकरणों तक सीमित पहुंच है। डिवाइस और सेंसर ओवरव्यू देखें।

Windows Vista उपयोगकर्ता खाता नियंत्रण जिसने मानक उपयोगकर्ता को पेश किया था, पुराने "सब कुछ प्रशासक" मॉडल की तुलना में सिस्टम और अन्य उपयोगकर्ताओं के डेटा की सुरक्षा पर केंद्रित था, लेकिन वर्तमान उपयोगकर्ता की डेटा फ़ाइलों की रक्षा करने के लिए बहुत कम किया क्योंकि सभी ऐप इसे एक्सेस या संशोधित कर सकते थे। AppContainer अलगाव सिस्टम और वर्तमान उपयोगकर्ता के डेटा और सेटिंग्स दोनों की सुरक्षा कर रहा है। "Win32 डेस्कटॉप ऐप्स" को C:\Program Files इंस्टॉल करने के लिए प्रोत्साहित किया गया था, जो केवल रनटाइम पर और एप्लिकेशन डेटा फ़ोल्डर का उपयोग करने के लिए पढ़ा गया था, लेकिन उन्हें आवश्यक नहीं था।

  • AppX की तैनाती। "Win32 डेस्कटॉप एप्स" तैनाती के किसी भी तरीके का उपयोग करते हैं, अक्सर एमएसआई तकनीक का उपयोग करके कुछ और "प्रशासक" के रूप में चल रहा है। UWP ऐप्स को AppX फ़ाइलों में पैक किया जाता है और हमेशा सिस्टम द्वारा तैनात किया जाता है। कोई "कस्टम इंस्टॉल चरण" नहीं है, और इसलिए UWP एप्लिकेशन ड्राइवर या सेवाओं को स्थापित नहीं कर सकते हैं, ACLs आदि को बदल सकते हैं। सिस्टम C / C ++ रनटाइम (जो केवल दृश्य C ++ 2015 होना चाहिए) को तैनात करने का ध्यान रखता है।

  • यूआई मॉडल । WinForms, MFC, WPF, जैसे "Win32 डेस्कटॉप ऐप्स" के लिए UI फ्रेमवर्क का बहुतायत है। इनमें से अधिकांश UWP के साथ संगत नहीं हैं क्योंकि UWP क्लासिक Win32 विंडोिंग, WM_ संदेश, या GDI / GDI + का समर्थन नहीं करता है। UWP ऐप्स के लिए, आप XAML का उपयोग C ++ या C # कोड-पीछे, DirectX (Direct2D और / या Direct3D) के साथ C ++ (या SharpDX की तरह 3rd पार्टी असेंबलियों के माध्यम से), या HTML5 के साथ जावास्क्रिप्ट द्वारा कर सकते हैं।

आपके प्रश्न का उत्तर देना अत्यंत कठिन है, यदि असंभव नहीं है, तो उत्पाद के कोड आधार और निर्भरता की पूरी समझ के बिना।

देखें Windows एप्लिकेशन के साथ आरंभ करें

मुझे पता है कि नए UWP ऐप मॉडल में "पारंपरिक" Win32 ऐप की तुलना करते समय कुछ सीमाएं हैं।

आइए Visual Studio Code को एक डेस्कटॉप ऐप के उदाहरण के रूप में लेते हैं।

विजुअल स्टूडियो कोड की कौन सी विशेषताएँ गायब थीं या उपयोगकर्ता के दृष्टिकोण से अलग होना चाहिए था, अगर यह एक UWP ऐप था?

संपादित करें: मैंने माइक्रोसॉफ्ट सर्टिफिकेशन के लिए परीक्षाएं दी हैं "अनिवार्य # विंडोज स्टोर एप्स का उपयोग करके C #" और परीक्षा 70-355: यूनिवर्सल विंडोज प्लेटफॉर्म - ऐप डेटा, सेवाएं और कोडिंग पैटर्न। इसलिए मुझे rt api के बारे में कुछ पता है।

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

सीमा हो सकती है, कि आपका ऐप कस्टम वाक्यविन्यास हाइलाइटर या रिफैक्टोरिन एक्सटेंशन की तरह 3 पार्टी प्लगइन्स का समर्थन नहीं कर सकता है (यह विंडोज़ स्टोर ऐप्स की सीमा थी, सुनिश्चित नहीं है कि यह अभी भी मान्य है)

एक और सीमा यह हो सकती है, कि आपका ऐप स्क्रीनशॉट लेने में सक्षम नहीं है, क्योंकि इसके लिए uwp में कोई एपीआई नहीं है (यह सुनिश्चित नहीं है कि यह वास्तव में है, वास्तव में)


मुझे एक ही समस्या थी एक बार और जो मैंने पाया वह यह है कि मेरे लिए मुद्दा __git_ps1 साथ था, मूल रूप से एक चर जिसमें स्टेटस __git_ps1 ब्रांच का नाम, __git_ps1 हेड स्टेट, git dir में, नंगे रेपो में, चेरी पिकिंग के बीच में शामिल है। या रिबासिंग या विलय।

अपने गिट बश में तेजी लाने के लिए, $ GitHome \ etc \ profile पर जाएं और if- __git_ps1 is जहाँ __git_ps1 is PS1 में जोड़ा जाता है, टिप्पणी करें।

वैसे भी आपके द्वारा टिप्पणी की जा रही जानकारी काफी उपयोगी है, यदि आप जीआईटी के साथ शुरुआत में हैं। यहाँ एक तेज़ संस्करण है, जो इंटरनेट पर पाया जाता है और मेरे द्वारा मेरे सिस्टम पर काफी सक्सेसफुल इस्तेमाल किया जाता है:

fast_git_ps1 ()                                                                              
{                                                                                            
    printf -- "$(git branch 2>/dev/null | grep -e '\* ' | sed 's/^..\(.*\)/ {\1} /')"    
}                                                                                            

PS1='\[\033]0;$MSYSTEM:\w\007                                                                
\033[32m\]\[email protected]\h \[\033[33m\w$(fast_git_ps1)\033[0m\]                                         
$ '