2012-05-10 19 views
6

'व्यवस्थापक के रूप में चलाएँ' मैं एक प्रोग्राम स्थापना पर मेरे दस्तावेज़ निर्देशिका में फ़ाइलों को बनाने के लिए की जरूरत है कि है इंस्टालर के साथ उपयोगकर्ता के मेरे दस्तावेज़ निर्देशिका के लिए लिखने के लिए। यह एक सख्त निश्चित आवश्यकता है, इसमें कोई बदलाव नहीं है। समस्या यह है कि यदि उपयोगकर्ता सेटअप फ़ाइल पर 'व्यवस्थापक के रूप में चलाएं' करता है, तो innosetups निरंतर {userdocs} व्यवस्थापक की दस्तावेज़ निर्देशिका को इंगित करता है जो उपयोगकर्ता में मूल लॉग इन नहीं है।कैसे जब इस्तेमाल किया उपयोगकर्ता

तो, Googled और इस पाया:

Install files to original user's My Docs folder via Inno Setup on Windows Vista/7

जवाब गलत है, तथापि, क्योंकि InnoSetup भी कहा गया है कि

एक उपयोगकर्ता द्वारा सेटअप की शुरूआत तो राइट-क्लिक करके अपने EXE फ़ाइल और का चयन "व्यवस्थापक के रूप में चलाने के लिए", तो इस ध्वज, दुर्भाग्य से, कोई प्रभाव, क्योंकि सेटअप मूल उपयोगकर्ता पहचान के साथ किसी भी कोड को चलाने के लिए कोई अवसर नहीं है होगा। यह भी सच है अगर से सेटअप पहले से ही उन्नत प्रक्रिया से लॉन्च किया गया है। नोट, हालांकि, यह एक Inno सेटअप-विशिष्ट सीमा नहीं है; विंडोज इंस्टालर-आधारित इंस्टॉलर ऐसे मामलों में मूल उपयोगकर्ता प्रमाण-पत्र पर वापस नहीं आ सकते हैं।

मुझे लगता है कि मैं उपयोगकर्ता को व्यवस्थापक के रूप में चलाने का उपयोग नहीं करने के लिए प्रोत्साहित कर सकता हूं लेकिन मुझे नहीं पता कि उसे ऊंचा में आने से कैसे रोकें।

मैं शायद कार्यक्रम में ही पहली बार चलाने पर मेरे दस्तावेज़ \ Program नाम निर्देशिका की स्थापना होने के बारे में सोच रहा था (स्थापित किया जा रहा करने के बाद)। क्या यह कामकाज काम करेगा? इसे फ़ाइलों को अपनी प्रोग्राम फाइल निर्देशिका से संभावित रूप से सीमित उपयोगकर्ता के रूप में कॉपी करना होगा। क्या यह संभव है या मैं प्राइवेट समस्याओं में भाग लेगा?

+1

सेटअप प्रोग्राम द्वारा उपयोगकर्ताओं के कौन से दस्तावेज़ तैयार किए जा सकते हैं? क्या आपका सेटअप प्रोग्राम वर्ड प्रोसेसर है? –

उत्तर

5

मूल का उत्तर मान्य है लेकिन इसकी अनुशंसा नहीं की जाती है। जब सेटअप चलाया जाता है, तो RunAsOriginalUser उपयोगकर्ता द्वारा वर्तमान में लॉग इन किए गए उपयोगकर्ता के रूप में चलाया जाएगा। यह सेटअप अपरिवर्तित रन का हिस्सा होने के द्वारा किया जाता है, और फिर एक और प्रतिलिपि चलाएं जो वास्तविक इंस्टॉल करने के लिए ऊंचा है।

जब उपयोगकर्ता स्पष्ट रूप से "व्यवस्थापक के रूप में चलाएं" करता है, तो "अपरिवर्तित स्टब" भी ऊंचा हो जाता है, इस मामले में, मूल उपयोगकर्ता तक पहुंचने के लिए सेटअप कुछ भी नहीं कर सकता है क्योंकि वह जानकारी पहले ही बदल दी गई है।

स्वीकार्य अभ्यास आपके द्वारा सुझाए गए एप्लिकेशन में किसी भी प्रोफ़ाइल विशिष्ट कार्य को करना है, जिसका अर्थ है कि यह अन्य उपयोगकर्ताओं के लिए और पूर्व विस्टा में लुआ पर्यावरण में काम करेगा (जहां आप बिल्कुल वही स्थिति रखते थे अब आप देख रहे हैं)।

0

यह लेख आपको कैसे ऊंचाई के आसपास काम करने के लिए पर कुछ मार्गदर्शन प्रदान कर सकते हैं,

http://www.codeproject.com/Articles/18946/High-elevation-can-be-bad-for-your-application-How

सामान्य शब्दों में, यह आप पर अपने निष्पादन योग्य (जो मेरे दस्तावेज़ के अंतर्गत फ़ाइलें बनाता है) निष्पादित करने के लिए एक मौका देता उन्नयन के बिना स्थापना का अंत।

+0

वह दृष्टिकोण व्यावसायिक ऐप में प्रयास करने के लिए बहुत जटिल दिखता है। मुझे नहीं पता कि अगर समस्याएं हैं तो कहां से शुरू करें। धन्यवाद हालांकि, यह एक रचनात्मक समाधान है। – hd112

1

पहले, PrivilegesRequired=lowest की स्थापना करके सुनिश्चित करें कि संस्थापक अपने आप ही विशेषाधिकार ऊंचाई की जरूरत नहीं होगी, बनाना:

[Setup] 
PrivilegesRequired=lowest 

संस्थापक गर्भपात करने के लिए, जब संस्थापक "व्यवस्थापक के रूप में" चल रहा है स्पष्ट रूप से उपयोगकर्ता द्वारा, Windows Vista और पुराने पर, InitializeSetup में IsAdminLoggedOn का उपयोग करें:

[Code] 

function InitializeSetup(): Boolean; 
begin 
    Result := True; 

    if (GetWindowsVersion >= $05010000) and 
    IsAdminLoggedOn then 
    begin 
    MsgBox('Do not run this installer "As Administrator".', mbError, MB_OK); 
    Result := False; 
    end; 
end; 

अधिक चर्चा के लिए विषय पर, Install files to original user's My Docs folder via Inno Setup on Windows Vista/7 देखते हैं।

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