2013-09-04 6 views
7

मैं एक ही निर्देशिका में संस्थापक के एक जोड़े को स्थापित करने के तो यह Inno सेटअप अनइंस्टॉलर नाम unins000.exe और unins000.datएक Inno-सेटअप अनइंस्टॉलर के डिफ़ॉल्ट नाम बदलें संघर्ष

का विरोध करता जरूरत नामकरण से बचने के लिए वहाँ के लिए एक रास्ता है एक इनो-सेटअप अपइंस्टॉलर का डिफ़ॉल्ट नाम बदलें?

+0

यह संभव नहीं है। और आपको नीचे दिए गए उत्तरों से हैक्स का उपयोग करने से बचना चाहिए। अनइंस्टॉलर फ़ाइलों का नाम बदलने से उन्नयन टूट जाएगा। देखें http://www.jrsoftware.org/ishelp/index.php?topic=appendnotes –

उत्तर

4

यह Elektrostudios 'जवाब के समान है, और क्या मेरे लिए काम किया है:

Filename: {cmd}; Parameters: "/C Mkdir ""{app}\Uninstallers\{#MyAppName}"""; Flags: RunHidden WaitUntilTerminated 
    Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.exe"" ""{app}\Uninstallers\{#MyAppName} - uninstall.exe"""; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.dat"" ""{app}\Uninstallers\{#MyAppName} - uninstall.dat"""; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.msg"" ""{app}\Uninstallers\{#MyAppName} - uninstall.msg"""; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#MyAppName}_is1"" /V ""UninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#MyAppName} - uninstall.exe\"""" /F"; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 
    Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#MyAppName}_is1"" /V ""QuietUninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#MyAppName} - uninstall.exe\"" /SILENT"" /F"; StatusMsg: Installing {#MyAppName}...; Flags: RunHidden WaitUntilTerminated 

विंडोज 7 का उपयोग करना, मुझे पता चला कि "मूव" कमांड जब तक कि मैं कहीं था पहले करने के लिए फ़ाइलों को स्थानांतरित करने से काम नहीं होगा, जिसका अर्थ है कि मुझे शीर्ष पर mkdir लाइन जोड़नी पड़ी। साथ ही, अनइंस्टॉलर .msg फ़ाइल के बिना भी काम नहीं करेगा, इसलिए मैंने पैटर्न का पालन किया और उस पंक्ति को भी जोड़ा।

मुझे "विंडोज 8" को "विंडोज 7" में बदलने के लिए परेशान नहीं था, लेकिन इससे कोई फर्क नहीं पड़ता, इसलिए मैं इसे अकेला छोड़ रहा हूं। अगर इसमें कोई समस्या है तो मुझे अनजान है, मुझे यकीन है कि कोई टिप्पणी में ऐसा संकेत देगा।

{#MyAppName}, निश्चित रूप से, आईएसएस फ़ाइल के शीर्ष पर निरंतर परिभाषित किया गया है जो एप्लिकेशन का नाम घोषित करता है। आपके निरंतर को अलग-अलग परिभाषित किया जा सकता है, इसलिए आपको जहां आवश्यक हो वहां मिलान करने के लिए इसे बदलना होगा।

+0

बस मैं उन लोगों को अंक देना पसंद करता हूं जो मुझे देने और जवाब देने में मदद करते हैं, धन्यवाद के लिए धन्यवाद! – ElektroStudios

+0

हां, @SertacAkyuz आप सही हैं, यह "डिफ़ॉल्ट अनइंस्टॉलर नाम बदलना" नहीं है, हालांकि, यह ऐसा करने में अक्षमता का कामकाज है। इसलिए, जब यह सीधे सवाल नहीं है, तो यह समस्या हल करता है। –

+0

इस बात की कोई गारंटी नहीं है कि अनइंस्टॉलर को 'unins000.exe' नाम दिया गया है। यदि इस नाम के साथ पहले से कोई और फ़ाइल है तो संख्या अलग-अलग होगी। क्या हो सकता है, अगर आप उदाहरण के लिए अपने आवेदन को डाउनग्रेड कर रहे हैं। यह भी देखें http://www.jrsoftware.org/ishelp/index.php?topic=appendnotes –

10

नहीं। 'Unins' हार्ड-कोडेड Inno सेटअप के सूत्रों के install.pas '' में प्रक्रिया 'निष्पादन, डेटा और संदेश फ़ाइलों के नाम पीढ़ी प्रक्रिया में, GenerateUninstallInfoFilename में है।

GenerateFilenames उप प्रक्रिया इस है:

BaseFilename := AddBackslash(BaseDir) + Format('unins%.3d', [I]); 
UninstallExeFilename := BaseFilename + '.exe'; 
.. 

जहां 'मैं' एक पूर्णांक और 'BaseDir' UninstallFilesDir जो आप बदल सकते हैं निर्धारित किया जाता है।

6

ठीक है, यह अभी भी संभवतः नहीं है, जबकि nativelly तो अनइंस्टॉलर नाम बदलने के लिए मैं अनइंस्टॉलर रजिस्ट्री पथ में रन अनुभाग में बैच आदेशों का उपयोग करेंगे अनइंस्टॉलर नाम बदलने के लिए और क्या करने के लिए एक ही:

[Run] 
Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.exe"" ""{app}\Uninstallers\{#ApplicationName} - uninstall.exe"""; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated 
Filename: {cmd}; Parameters: "/C Move ""{app}\unins000.dat"" ""{app}\Uninstallers\{#ApplicationName} - uninstall.dat"""; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated 

Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#ApplicationName}_is1"" /V ""UninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#ApplicationName} - uninstall.exe\"""" /F"; StatusMsg: Installing {#ApplicationName}...; Flags: RunHidden WaitUntilTerminated 
Filename: REG.exe; Parameters: "ADD ""HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Windows 8 ContextMenu - {#ApplicationName}_is1"" /V ""QuietUninstallString"" /T ""REG_SZ"" /D ""\""{app}\Uninstallers\{#ApplicationName} - uninstall.exe\"" /SILENT"" /F"; StatusMsg: Installing {#TipName}...; Flags: RunHidden WaitUntilTerminated 
+1

एक के द्वारा उपरोक्त क्योंकि मैं इस समाधान को मेरे लिए काम करने में सक्षम था (नीचे पोस्ट समाधान देखें) –

+1

उत्कृष्ट हैक! – CyprUS

7

इनो स्वचालित रूप से ऐसा करता है जब यह एक ही निर्देशिका में एक अलग अनुप्रयोग स्थापित किया जाता है (एक अलग AppID पर आधारित)। इसके पीछे पीछे जाने और अनइंस्टॉलर फ़ाइलों का नाम बदलने की आवश्यकता नहीं होनी चाहिए।

+0

यह गलत है क्योंकि यह कहना मुश्किल है कि कौन सा अनइंस्टॉलर जो स्थापना से संबंधित है। – Magnus

+1

@Magnus तथ्य यह है कि कोई व्यक्ति यादृच्छिक रूप से फ़ोल्डर्स के माध्यम से जा रहा है, उन्हें अलग नहीं बता सकता है कि यह तथ्य यह नहीं बनाता कि इनो स्वचालित रूप से इस गलत को संभालता है। यदि आप, डेवलपर इसे आसान बनाना चाहते हैं, तो '{uninstallexe}' पर इंगित स्टार्ट मेनू समूह में शॉर्टकट जोड़ें, उन्हें जोड़ें/निकालें प्रोग्राम एप्लेट पर इंगित करें, या 'अनइंस्टॉल करें' सेट करें। इनो अभी भी एक ही फ़ोल्डर में पूरी तरह से अच्छी तरह से और डिजाइन द्वारा विभिन्न अनुप्रयोगों को संभालता है। – Deanna

0

इनो सेटअप आपको अनइंस्टॉलर नाम (या नाम बदलें) देने का कोई तरीका नहीं प्रदान करता है। इनो सेटअप अपने आप पर विवादों का नामकरण करने का ख्याल रखता है।

यह भी ध्यान दें कि जब आप मैन्युअल रूप से अनइंस्टॉलर का नाम बदलने का प्रयास करते हैं (जैसे कुछ उत्तरों यहां करते हैं), तो आप में अनइंस्टॉलर के संदर्भ को तोड़ें या नियंत्रण कक्ष में जोड़ें।

भले ही आप संदर्भ को ठीक करते हैं, फिर भी एक और समस्या है। जब आप बाद में अपग्रेड करते हैं, तो नए इंस्टॉलर को पिछले इंस्टॉलर के लॉग नहीं मिलेंगे और उन्हें मर्ज करने में सक्षम नहीं होंगे। नतीजतन भविष्य में अनइंस्टॉलेशन पूरी तरह से एप्लिकेशन को हटा नहीं देगा। इनो सेटअप दस्तावेज़ में Appending to Existing Uninstall Logs देखें।

2

बस इसे स्वयं से निपटाया। मार्टिन प्रीक्रिल ने बताया कि आपको अनइंस्टॉलर को निष्पादन योग्य नहीं करना चाहिए। लेकिन मैं मानता हूं कि एक निर्देशिका में बैठे क्रमांकित अनइंस्टॉलर्स का समूह होने के लिए असंतुष्ट है जिसके बारे में कोई स्पष्ट साधन नहीं है।

इनो सेटअप प्रदान करता है सुविधाओं का उपयोग कर एक समाधान है।

[Setup] 
... 
UninstallFilesDir=Uninstall\exe\{#NAME_OF_APP} 
... 
फिर [Dirs] खंड में

: [Setup] खंड में

[Dirs] 
... 
Name: Uninstall\exe; Attribs: hidden; 
Name: Uninstall\exe\{#NAME_OF_APP}; Attribs: hidden; 
... 

और अंत में आप नामित बनाने शॉर्टकट [Icons] में है कि uninstallers जो हमेशा एक ही नाम होगा को इंगित क्योंकि आप एकांत गए उन्हें:

[Icons] 
... 
Name: Uninstall\{#NAME_OF_UNINSTALLER}; Filename: Uninstall\exe\{#NAME_OF_APP}\unins000.exe 
... 

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

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