WIX: كيفية منع قيمة التسجيل من إزالتها على إلغاء؟
سؤال
وأريد التأكيد على أن قيمة التسجيل معينة موجودة بعد التثبيت، لذلك أضفت المكون التالي:
<Component Id="RegistryEntryContextMenuOdt" Guid="4BA5BA24-4F65-4BDF-99EB-CB4B947F31A9" DiskId="1" KeyPath="yes">
<RegistryKey Id="RegKeyOdt" Root="HKCR" Action="create" Key=".odt">
<RegistryValue Type="string" Value="openDocument.WriterDocument.1" />
</RegistryKey>
</Component>
قد يكون تم تعيين مفتاح / قيمة قبل التثبيت. ومع ذلك، أريد أن يتم تعيين القيمة إلى بلدي قيمة معينة، أي أنه سيتم الكتابة فوقه مع قيمة بلدي.
ومشكلتي هي الآن أن هذه القيمة هي <م> دائما م> إزالة عندما يتم إلغاء تثبيت المنتج الخاص بي. ومع ذلك، أريد فقط القيمة التي سيتم إزالتها إذا تم إضافته من قبل بلدي المثبت. إذا كان لي أن المثبت فقط تعديل قيمة، يجب استعادة القيمة السابقة (أو، إذا لم يكن ذلك ممكنا، ينبغي أن تظل قيمة بلدي تمس).
تجدر الإشارة إلى أن المفتاح نفسه لا يتم إزالة على إلغاء التثبيت. يبدو أن هذا العمل بشكل صحيح لأنني محدد Action="create"
على عنصر RegistryKey
.
هل هناك ربما وضع مماثل لRegistryValue
التي سوف تخلق قيمة ولكن ليس إزالته على تثبيت؟
وUPDATE: مفاتيح كل التسجيل تحت HKCR هي آلة settinge واسعة، أي أنها تنشأ من SOFTWARE \ فئات فرع HKLM \ من التسجيل
.المحلول
ويمكنك التأكد من أن المكون يتم تثبيت فقط عند عدم وجود إدخال التسجيل من خلال الاستفادة من السمة NeverOverwrite
من في المكون عنصر . من وثائق WIX لNeverOverwrite
:
إذا تم تعيين هذه السمة إلى "نعم"، و لا يقوم المثبت بتثبيت أو إعادة تثبيت المكون إذا كان مسار مفتاح ملف أو مفتاح إدخال التسجيل مسار العنصر موجود بالفعل.
اقتباس فقرة> وأنت قد تحتاج أيضا إلى تعيين السمة KeyPath
على عنصر في التسجيل ل yes
لجعله لا لبس فيها أن إدخال التسجيل هو المسار الرئيسي المكون.
إذا كنت لا تريد أن تعيين قيمة التسجيل حتى إذا كان موجودا بالفعل، ولكن كنت لا تريد إزالته على إلغاء التثبيت، ثم يمكنك استخدام السمة Permanent
العنصر المكون بدلا من ذلك.