WIX: كيفية منع قيمة التسجيل من إزالتها على إلغاء؟

StackOverflow https://stackoverflow.com/questions/709661

  •  22-08-2019
  •  | 
  •  

سؤال

وأريد التأكيد على أن قيمة التسجيل معينة موجودة بعد التثبيت، لذلك أضفت المكون التالي:

<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 العنصر المكون بدلا من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top