Wix InstallExecuteSequence выдает ошибку при поддержке 47-го экземпляра msi - PullRequest
1 голос
/ 27 мая 2020

Ошибка возникает при поддержке 47-го экземпляра. Он работает нормально, если я удалю действие SetMyInstance_Instance47. Мне нужно поддерживать 100 экземпляров. Фрагмент кода приведен ниже.

<InstallExecuteSequence>
 <Custom Action="SetMyInstance_Instance46" After="SetMyInstance_Instance45"><![CDATA[ACTION = "INSTALL" AND MYINSTANCE = "DontUseThis" AND  (INSTANCE46INSTALLEDPRODUCTCODE = "" AND INSTANCE46INSTALLEDPRODUCTCODE64 = ""  AND INSTANCE46INSTALLEDPRODUCTCODE32 = "")  AND SECONDEXECUTE <> 1 ]]></Custom>
      <Custom Action="SetMyInstance_Instance47" After="SetMyInstance_Instance46"><![CDATA[ACTION = "INSTALL" AND MYINSTANCE = "DontUseThis" AND  (INSTANCE47INSTALLEDPRODUCTCODE = "" AND INSTANCE47INSTALLEDPRODUCTCODE64 = ""  AND INSTANCE47INSTALLEDPRODUCTCODE32 = "")  AND SECONDEXECUTE <> 1 ]]></Custom>
 </InstallExecuteSequence>

Ошибка Wix: таблица InstallExecuteSequence содержит действие SetMsiNewInstance, которое не может иметь уникальный порядковый номер, поскольку оно запланировано до или после действия AppSearch. До или после этого действия недостаточно места для присвоения уникального порядкового номера. Пожалуйста, запланируйте одно из действий иначе, чтобы оно соответствовало позиции с большим количеством доступных порядковых номеров. Обратите внимание, что порядковые номера должны быть целыми числами в диапазоне от 1 до 32767 (включительно).

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Для диагностики - прежде всего (перед исправлением) попробуйте следующее:

  • Откройте свой MSI в Orca или аналогичном редакторе
  • Go до InstallExecuteSequence, отсортируйте по Sequence (правый столбец).
  • Какие числа вы видите? Обратите внимание на пробелы в числах. Эти пробелы позволяют другим действиям «между» стандартными действиями. Если у вас закончились «пробелы», вы, вероятно, получите сообщение, которое вы получите.
  • Для стандартных действий используются «номера по умолчанию», и они кажутся , определенными в файле вызываемые действия. xml (перейдите по этой ссылке).

=> Заключение? Вам нужны большие промежутки между стандартные действия. По крайней мере, это ОДНА из вещей, которые вам нужны. Что вам действительно нужно сделать, так это прекратить использование такого количества экземпляров: -).

Вы можете попробовать вручную установить порядковый номер И вы можете назначить новые номера стандартным действиям:

<InstallExecuteSequence>

   <..>

     <!-- Redefine standard action numbers -->

      <LaunchConditions Sequence='300'></LaunchConditions>
      <FindRelatedProducts Sequence='2'></FindRelatedProducts>

   <..>

     <!-- Manually assign custom action sequence numbers -->

       <Custom Sequence="44" Action='SomethingDoneHere1' />
       <Custom Sequence="45" Action='SomethingDoneHere2' />

   <..>

</InstallExecuteSequence>

Orca

0 голосов
/ 27 мая 2020

MSI не обязательно иметь уникальные порядковые номера. У нескольких действий может быть один и тот же порядковый номер, который просто не обещан, который будет запускаться первым. Если все эти экземпляры являются взаимоисключающими, это не имеет значения.

Другой вариант - иметь 1 настраиваемое действие, которое читает из настраиваемой таблицы и выполняет ту же обработку, но занимает только одну позицию в последовательности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...