2009-09-16 4 views
5

में असेंबलीफ़ाइल जानकारी पढ़ सकता हूं, मैं अपने इनो सेटअप स्क्रिप्ट में अपने application.exe से इन तीन मानों को पढ़ना चाहता हूं।क्या मैं इनो सेटअप

[assembly: AssemblyCompany("My Company")] 
[assembly: AssemblyProduct("My Great Application")] 
[assembly: AssemblyFileVersion("9.3.2")] 

क्या कोई जानता है कि यह कैसे किया जा सकता है?

मुझे पता है कि मैं GetFileVersion("path/to/greatapp.exe") का उपयोग कर अंतिम प्राप्त कर सकता हूं क्या पहले दो के लिए कुछ समान है?

+0

मुझे नहीं लगता कि यह करने योग्य है क्योंकि उन विशेषताओं .NET विशिष्ट हैं। जब तक आप उस लक्ष्य को प्राप्त करने के लिए अपना स्वयं का विस्तार नहीं लिखते। तो मैं अपनी लिपि में उन्हें कोडिंग के साथ खत्म हो गया। –

उत्तर

8

उपयोग Inno सेटअप प्रीप्रोसेसर (ISPP) द्वारा प्रदान की GetStringFileInfo() समारोह: अपने कस्टम क्रिया में, आप विधानसभा गुण लाने के लिए निम्नलिखित कोड जोड़ने की जरूरत

  1. GetStringFileInfo("path/to/greatapp.exe", "CompanyName")
  2. GetStringFileInfo("path/to/greatapp.exe", "ProductName")
  3. GetStringFileInfo("path/to/greatapp.exe", "FileVersion")

जैसा कि आपने पहले ही उल्लेख किया है, आप उपरोक्त # 3 के बजाय GetFileVersion() फ़ंक्शन का उपयोग कर सकते हैं।

इसके अलावा, ISPPBuiltins.iss स्क्रिप्ट फ़ाइल को अपने इनो सेटअप स्थापना के साथ शामिल करें। इसमें ऊपर # 1 के बजाय उपयोग करने के लिए GetFileCompany() फ़ंक्शन शामिल है और आप उपरोक्त # 2 को उसी तरह लागू कर सकते हैं।

0

मुझे इनो सेटअप नहीं पता है, लेकिन मुझे लगता है कि यह अन्य सेटअप टूल (विजुअल स्टूडियो, विक्स, इंस्टालशील्ड या वाइस) जैसे कस्टम क्रियाओं का समर्थन करता है।

तो, आपको असेंबली से इस जानकारी को पढ़ने के लिए एक कस्टम कार्रवाई करने की आवश्यकता होगी। इस प्रकार

Assembly assembly = Assembly.LoadFrom (@"path\to\greatapp.exe"); 
object[] attributes = assembly.GetCustomAttributes(true); 

if (attributes.Length > 0) 
{ 
    foreach (object o in attibutes) 
    { 
     //Do Something with the attribute 
    } 
} 
+0

यह बहुत प्रयास कर सकता है, क्योंकि आमतौर पर इनो सेटअप एक्सटेंशन .NET में लिखे गए नहीं हैं, जिसका अर्थ है कि आपको विशेषताओं को क्वेरी करने के लिए फ़ाइल को मैन्युअल रूप से पार्स करने की आवश्यकता है। –

+0

मैं इस कहीं भर में ठोकर खाई और यह काम करने लगता है: #define MyAsmVersion GetStringFileInfo ("C: \ ProjectFolder \ बिन \ रिलीज \" + ExeName, "विधानसभा संस्करण") यह विधानसभा 'के बीच एक जगह की जरूरत लग रहा था और 'संस्करण' – TonyM