خصائص شرط WiX التي تم تمريرها من سطر الأوامر لا تعمل؟

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

سؤال

لدي خاصية لتحديد ما إذا كنت تريد تثبيت الاختصارات التي يجب تمريرها عبر وسيطات سطر الأوامر.يبدو أن الشروط تعمل عندما أقوم بتعيين الخصائص داخل ملف wxs، ولكن يبدو أنه يتم تجاهلها عند تعيينها من خلال سطر الأوامر.من السجل أرى أنه تم تعيينهم:

MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.

ومع ذلك، لم يتم تثبيت الاختصارات.

أيضًا، يبدو أنه نظرًا لأنها تحتاج إلى أن تكون في مكون خاص بها لتتمكن من ضبط الشروط عليها، لم يعد من الممكن الإعلان عنها باعتبارها اختصارات.كيف يمكنك الحصول على الاختصارات المعلن عنها المثبتة بشكل مشروط؟

رمز الاختصار الحالي:

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
  <Condition>INSTALLSTARTMENUSHORTCUT</Condition>
  <Shortcut Id="StartMenuServerShortcut"
    Directory="ProgramMenuDir"
    Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
    Target="[!FileEXE]"
    Icon="Icon.ico" />
</Component>

وتكرر للاختصارات الأخرى

يحرر:

تجربة ما اقترحه ساشا وإضافة ما يلي:

<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>

يقوم الآن بتثبيت جميع الاختصارات على الرغم من ضبطها على 0 في ملف XML وفي سطر الأوامر.سطر الأوامر الذي أقوم بتمريره هو:

msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb

حاولت وضع القيم بين علامتي اقتباس ولم يحدث ذلك بعد.لم يتم عرضه هنا، ولكنني نجحت في معالجة خاصية ALLUSERS لإجراء سجلات لكل مستخدم أو لكل جهاز عن طريق إجراء ALLUSERS="" أو ALLUSERS="2" لذلك يجب أن يكون تمرير الخصائص ممكنًا، ولكنني لست متأكدًا من الأمر أنا أفعل الخطأ.

هل كانت مفيدة؟

المحلول

أمران لأن هناك سؤالين هنا:

  1. يجب أن تكون الاختصارات المعلن عنها في نفس المكون الذي يقوم بتثبيت الملف الذي تشير إليه.يتم طلب ذلك لأن Windows Installer يشير إلى اختصار مُعلن عنه في KeyPath الخاص بالمكون.لذلك، لا يمكنك استخدام الاختصارات المعلن عنها إذا كنت تريد تثبيتها بشكل اختياري.

انا املك مشاركة مدونة حول كيفية إنشاء اختصار وتمرير التحقق من الصحة.

  1. يجب وضع علامة "آمنة" على الخصائص التي تستخدمها لتمريرها من عملية تثبيت واجهة المستخدم إلى جانب الخادم.للقيام بذلك فقط افعل

    <معرف الخاصية = "INSTALLSTARTMENUSHORTCUT" آمن = "نعم"/>

لاحظ أنني لم أقم بإضافة سمة القيمة.إذا قمت بتحديد قيمة، حتى لو كانت 0، فسيتم تقييم INSTALLSTARTMENUSHORCUT الخاص بك إلى TRUE.الخاصية الفارغة/غير المحددة هي FALSE، وأي قيمة أخرى هي TRUE.

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