AppSearch имеет порядковый номер 50 - верно? - PullRequest
0 голосов
/ 30 августа 2018

Это не очень хороший вопрос, но, пожалуйста, потерпите меня на минутку.

Чтобы представить его в перспективе, я использую Запомнить шаблон , чтобы сохранить значения свойств ввода строки CMD, и столкнулся с проблемой планирования моих 25+ настраиваемых действий для сохранения предоставленных свойств строки CMD перед AppSearch, так как Помните, что Pattern полагается на предоставленные CMD значения свойств, сохраненные до AppSearch. Полученное сообщение об ошибке выглядит следующим образом:

ошибка LGHT0179: таблица InstallUISequence содержит действие 'SaveCmdLine_SERV ICE_ACCOUNT', который не может иметь уникальную последовательность номер, потому что это запланировано до или после действия 'AppSearch'. До или после этого действия недостаточно места для назначения уникальный порядковый номер. Пожалуйста, запланируйте одно из действий иначе, чтобы он был в положении с большей последовательностью номера доступны. Обратите внимание, что порядковые номера должны быть целое число в диапазоне 1 - 32767 (включительно).

При проверке MSI, скомпилированной с использованием Orca, Sequence for AppSearch равен 50. Трудно найти документацию о таблице MSI Sequence, если что-нибудь вообще есть, но согласно ссылке из этого SO-вопроса , AppSearch должен иметь Последовательность 400. Обходной путь, который я использую, - это смещение AppSearch к большему порядковому номеру при проверке генерируемого MSI с использованием Orca. Что, кажется, хорошо.

Но 50 - это довольно низкое число, почему оно установлено на 50 вместо 400? Это управляется API установщика Windows или Wix?

Обновление: После обновления AppSearch до последовательности 400 я сталкиваюсь с проблемой, когда использование следующего кода с использованием начальной загрузки для требования .Net 4.5 завершится неудачей.

  <Chain>
  <PackageGroupRef Id="NetFx451Redist" />
  <MsiPackage Name="$(var.OutputName).msi" SourceFile="MyInstaller.msi" DisplayInternalUI="yes" />
</Chain>

При проверке, похоже, мне нужно запланировать LaunchConditions из порядкового номера 100 в порядковый номер 600, чтобы это продолжалось после AppSearch, чтобы предварительный запрос проверки .Net framework все еще работал. Я думаю, что это, вероятно, одна из причин, по которой AppSearch был запланирован так рано WiX.

1 Ответ

0 голосов
/ 31 августа 2018

Стандартные порядковые номера WiX по умолчанию : я подозреваю - не имея возможности подтвердить это - что WiX использует следующий XML-файл (actions.xml) для определения стандартной последовательности нумерации действий по умолчанию): https://github.com/wixtoolset/wix3/blob/develop/src/tools/wix/Data/actions.xml (это источник WiX, хранящийся на github.com ).

Извлечение : вставка содержимого, которое вы специально просили:

<actions xmlns="http://schemas.microsoft.com/wix/2003/04/actions">
  <..>
    <action name="AppSearch" sequence="50" InstallExecuteSequence="yes" InstallUISequence="yes" />
  <..>
</actions>

Ответ : Поэтому я думаю, что ответ заключается в том, что WiX определяет порядок большинства стандартных действий в этом исходном файле (actions.xml). Порядок не имеет ничего общего с API MSI - но только несколько других конфигураций будут иметь смысл или будут разрешены. Следовательно, API MSI налагает ограничения, которые применяются. Эти стандартные действия должны относиться друг к другу в стандартном порядке - с некоторой задержкой.

Исключения : Стандартное действие RemoveExistingProducts можно переместить в несколько разных мест - как пример " свободу действий». Это конкретное стандартное действие отсутствует в вышеуказанном (actions.xml) файле - и, вероятно, по этой причине: оно не имеет фиксированного позиционирования по умолчанию. Он имеет (как минимум) 3 настраиваемых. Я бы предположил, что он обрабатывается динамически глубоко в коде компоновщика (light.exe).

Roll Your Own? : Я полагаю, что невозможно скомпилировать свои собственные двоичные файлы WiX с другой стандартной схемой последовательности действий по умолчанию, но компиляция WiX - не маленькая задача.

WiX 4 : обратите внимание, что в WiX 4 соответствующий исходный файл выглядит следующим образом: https://github.com/wixtoolset/wix4/blob/develop/src/libs/WixToolset.Data/Data/actions.xml


Из MSI SDK :

Ограничения на стандартную последовательность действий описаны в ссылках ниже. Похоже, AppSearch последовательность не ограничена - третья ссылка ниже):

...