2012-05-14 13 views
14

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

मैं "मेरा इंस्टॉलर" या कुछ अन्य पाठ में फ़ील्ड/विशेषता प्रकाशक कैसे सेट कर सकता हूं?

मुझे लगता है कि निम्नलिखित कोड प्रकाशक क्षेत्र स्थापित करने के लिए माना जाता है, लेकिन यह नहीं, यह अभी भी 'अज्ञात' बनी हुई है करता है:

InstallDir "abc" 
Name  "def"   
OutFile  "def.exe" 

VIProductVersion     "1.0.0.0" 
VIAddVersionKey ProductName  "def" 
VIAddVersionKey Comments   "MY DESCRIPTION" 
VIAddVersionKey CompanyName  "My Installer" 
VIAddVersionKey LegalCopyright "MY COMPANYNAME" 
VIAddVersionKey FileDescription "MY DESCRIPTION" 
VIAddVersionKey FileVersion  1 
VIAddVersionKey ProductVersion 1 
VIAddVersionKey InternalName  "def" 
VIAddVersionKey LegalTrademarks "PTY LTD" 
VIAddVersionKey OriginalFilename "def.exe" 

Section 
    DetailPrint "Hello World" 
SectionEnd 
+1

जब तक आप एसएसएन से एनएसआईएस के निरंतर संस्करण के साथ खेलना नहीं चाहते हैं, तो आप इसे आसानी से नहीं बदल सकते हैं। Http://stackoverflow.com/questions/4244497/changing-nsis-installer-properties – Seki

+2

महत्वपूर्ण बात यह है कि "हस्ताक्षरकर्ता" फ़ील्ड डिजिटल हस्ताक्षर द्वारा किया जाता है, जिसमें प्रकाशक हस्ताक्षर के होते हैं। इसका मतलब है कि शुरू करने के लिए आपको हस्ताक्षर खरीदने की जरूरत है। –

उत्तर

17

आप Authenticodesign करने के लिए एक प्रमाण पत्र के साथ संस्थापक होता प्राधिकरण विंडोज़ द्वारा भरोसा करते हैं (यदि आप Winqual का हिस्सा बनना चाहते हैं तो आपको एक विशेष प्रमाणपत्र की आवश्यकता है और एमएस आपको केवल VeriSign का उपयोग करने की अनुमति देता है) क्योंकि वह फ़ील्ड डिजिटल सर्टिफिकेट (यदि कोई मौजूद है) से निकाला गया है और पीई संस्करण की जानकारी से नहीं है।

बिल्ड प्रक्रिया के हिस्से के रूप में साइन इन करने के लिए आप इस hack का उपयोग कर सकते हैं, या यदि आप यूनिकोड कांटा का उपयोग कर रहे हैं तो आप !finalize कमांड का उपयोग कर सकते हैं।

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