एचकेएमएल के तहत एक रजिस्ट्री कुंजी है जिसमें लोड करने के लिए ड्राइवरों की अल्पविराम से अलग सूची है।

एचकेएलएम कहीं "इंस्टॉल किए गए ड्राइवर" "फू, बार"

हमारे ड्राइवर को स्थापित करते समय, हमें इस सूची में एक प्रविष्टि जोड़ने की आवश्यकता होती है ताकि यह बन जाए

एचकेएलएम कहीं "इंस्टॉल किए गए ड्राइवर" "फू, बार, बाज़"

और अनइंस्टॉल करने पर हमें अपनी प्रविष्टि को सूची से दूर खींचने की जरूरत है, यानी एक s/,baz// करें ताकि यह अपनी मूल स्थिति में वापस आ जाए

एचकेएलएम कहीं "इंस्टॉल किए गए ड्राइवर" "फू, बार"

मैं केवल इंस्टॉल पर कुंजी को स्टोर नहीं कर सकता और इसे अनइंस्टॉल करने पर हटा सकता हूं, क्योंकि यदि अन्य ड्राइवर इंस्टॉल हो जाते हैं, तो कुंजी "फू, बार, बाज़, ब्रावो" हो सकती है - इसलिए यह हमारे बाद "फू, बार, ब्रावो" बन जाना चाहिए ड्राइवर अनइंस्टॉल हो जाता है।

ओह और अगर बाज पहले से ही सूची में है, तो इसे दोबारा नहीं जोड़ा जाना चाहिए।

मैं इस तरह की चाबियों में हेरफेर करने के लिए वाईएक्स को पृथ्वी पर कैसे लड़ूं?

1
lwa 18 पद 2020, 14:48

2 जवाब

सबसे बढ़िया उत्तर

बेहतर तरीके हो सकते हैं, लेकिन C# का उपयोग करके आप ऐसा कुछ कर सकते हैं।

यहाँ एक C# 2019 नमूना है:

using System;
using System.Collections.Generic;
using System.Linq;

namespace CommaSeparatedEditing
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = "foo, bar, baz, stack, overflow, server, fault,endingentry";

            List<String> Items = list.Split(',').Select(i => i.Trim()).Where(i => i != string.Empty).ToList(); // Split them all and remove spaces
            Items.Remove("fault"); // Remove any value you want
            Items.Add("My New Entry"); // Add a new entry

            string modifiedlist = String.Join(", ", Items.ToArray());

            Console.WriteLine(modifiedlist);
            Console.ReadLine(); // keep console open to show result
        }
    }
}

ऊपर लिखी गई सूची / जेनेरिक संग्रह का उपयोग करता है < से a href="https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic?view=dotnet-plat-ext-5.0" rel="nofollow noreferrer">System.Collections.Generic नाम स्थान। अधिक हल्के वजन वाले स्ट्रिंग सरणियों, रेगेक्स का उपयोग करके कई अन्य दृष्टिकोण हैं और एक विशिष्ट प्रविष्टि की खोज करने वाले आदेशों को प्रतिस्थापित करते हैं और इसे रिक्त स्थान से प्रतिस्थापित करते हैं: ""।

कुछ वैकल्पिक तरीकों के कुछ नमूना स्निपेट यहां दिए गए हैं: मैं एक स्ट्रिंग से अल्पविराम से अलग किए गए विशिष्ट मान को कैसे निकालूं? (पृष्ठ को नीचे स्क्रॉल करें)।

यहाँ C# आस्थगित मोड कस्टम क्रियाओं का एक WiX नमूना है: https://www.github.com/glytzhkof /WiXDeferredModeSample

0
Stein Åsmul 20 पद 2020, 21:25

एमएसआई/वाईएक्स केवल मल्टीस्ट्रिंग रजिस्ट्री मानों को जोड़ने/प्रीपेन्ड करने का समर्थन करता है। आप जो वर्णन करते हैं वह अल्पविराम सीमित स्ट्रिंग है।

किसी प्रॉपर्टी में मौजूदा मान को पढ़ने के लिए आपको AppSearch का उपयोग करना होगा। संपत्ति को अपनी इच्छानुसार प्रारूपित करने के लिए एक कस्टम क्रिया का उपयोग करें और फिर रजिस्ट्री मान को वापस लिखने के लिए वाईएक्स का उपयोग करें।

0
Christopher Painter 18 पद 2020, 20:21