При миграции с Wix 3.0 на Wix 4.0 появляется сообщение об ошибке: WXCP0006: пробел, предшествующий этому узлу, является неправильным (WhitespacePrecedingNodeWrong) - PullRequest
0 голосов
/ 28 августа 2018

При переносе Wix 3.0 на Wix 4.0 с использованием WixCOP я получаю сообщение об ошибке WXCP0006: пробел, предшествующий этому узлу, неверен (WhitespacePrecedingNodeWrong)

Я запускаю следующую команду

WixCop.exe -f E: \ Test \ Wix \ src \ UI * .wxs.

Когда я запускаю ту же команду для перехода с Wix 2.0 на Wix 3.0, я не получаю никаких ошибок.


ОБНОВЛЕНИЕ : Спасибо за подробную информацию.

1) Я запускаю приведенную ниже команду несколько раз и получаю одни и те же ошибки.

WixCop.exe -f E: \ Test \ Wix \ src \ UI * .wxs.

2) Я вижу изменения в файлах .WXS (пространство имен и другие изменения) после выполнения этой команды

3) Я хотел знать, как настроить неправильный пробел (я имею в виду, какой файл в wix40-двоичных файлах bcz Я видел несколько файлов .config, но они не связаны с wixcop)

А также в каком файле я могу подавить команду «WhitespacePrecedingNodeWrong»?

Когда я первоначально перешел с wix 2.0 на wix 3.0, я получил ошибки перебора. Затем, когда я запускаю приведенную ниже команду «Исправить ошибки», эти ошибки были устранены. WixCop.exe -f E: \ Test \ Wix \ src \ UI * .wxs.

Но при переходе с wix 3.0 на wix 4.0 почему эта команда не устраняет эти ошибки?

1 Ответ

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

UPDATE2 : Может быть, вы можете записать результаты по файлам лучше - чтобы увидеть, что ломается. Вот одно предложение (я давно пытался забыть о пакетных файлах, так что простите любой не хватает элегантности. Никаких гарантий вменяемости здесь):

for %h in (*.wxs) do wixcop -f "%h" -set1Test.xml >> Log.log

Где Test.xml - файл настроек, описанный в разделе ниже. Или запустить без файла настроек:

for %h in (*.wxs) do wixcop -f "%h" >> Log.log

Очевидно, что будьте осторожны с приведенными выше командами! Они будут нацелены на все исходные файлы WiX в целевой папке - что в вашем случае является тем, что вам нужно, но для тех, кто находит командные строки: осторожность .


UPDATE

  1. Pinpoint : не могли бы вы попытаться выполнить команду для подмножества файлов или один раз для каждого файла, чтобы вы могли определить, какой файл вызывает реальную проблему? Другой способ найти это - запустить все файлы (используйте ваш текущий подход с использованием подстановочных знаков), а затем посмотреть, какие файлы не были обновлены?

  2. Неизмененные файлы? : Как я уже говорил выше, пожалуйста, попробуйте определить, какие файлы не были обновлены. Если есть. Неизмененные файлы могут вызвать ошибки, которые прерывают операцию обновления?

  3. Подавлять ошибки : Я не знаю ни одного примера файлов настроек, кроме того, что можно найти в документации, с которой я связывался ранее . Давайте попробуем создать простой файл настроек, чтобы игнорировать два типа ошибок:

    File Name: Test.xml
    
    <Settings>
       <IgnoreErrors>
         <Test Id="WhitespacePrecedingNodeWrong" />
         <Test Id="WhitespacePrecedingEndElementWrong" />   
       </IgnoreErrors> 
    </Settings>
    
    Command Line To Use: wixcop.exe -f Product.wxs -set1Test.xml
    
  4. Разрешение : Короткий ответ: я не знаю, почему у вас возникли неразрешимые проблемы в этот раз. Как уже говорилось, попытайтесь сузить проблему до одного файла - или группы файлов - если возможно, используя приведенные выше рекомендации.


Исправление, новое исправление следует ( практикуя тавтологии ): Если вы снова запустите команду для того же файла (-ов), ошибки исчезли? Кажется, что файл WiX все еще обновляется (насколько это возможно для записи) - несмотря на сообщения об ошибках - и происходит то, что процесс исправляет несоответствия отступов и перевода строки (среди прочего), так что исходный файл соответствует стандарту WiX ( или ваш собственный стандарт) потом.

Установка стандарта : вы видите ошибку, указывающую на наличие несоответствий пробелов в вашем исходном файле. Это может быть просто ошибочное количество отступов - например. В соответствии с Bob Arnson's фрагментом WiX Cop здесь: http://www.joyofsetup.com/2008/03/26/wix-goodies-wixcop настраивается обнаружение неверного пробела - как и многие другие параметры для других проверок за пределами пробела. Вам необходимо предоставить файлы настроек и определить правильные параметры командной строки, чтобы установить свой собственный стандарт. Вы можете подавить некоторые тесты и исправления, например. Ниже приведен краткий пример файла настроек в ссылке на онлайн-документацию.

WiXCop.exe : я не буду повторять все детали здесь, пожалуйста, смотрите пост Арнсона выше или запустите wixcop /? через командную строку для получить список доступных ключей командной строки (WiX должен быть установлен, конечно, и вам нужно WiX Bin directory в пути). Вы также можете увидеть все переключатели в онлайн-документации WiX для WiXCop.exe .

Полагаю, что общее резюме таково: WiXCop.exe расширяет обычную проверку файла MSI на шаг вперед, проверяя исходный файл WiX XML непосредственно перед компиляцией в формат MSI. И это помогает переносить источники, когда для изменения схемы между версиями WiX требуются пакетные обновления.

Я немного удивлен, что нет функции автоматического резервного копирования для процесса обновления WiX XML. Я думаю, есть веская причина, почему это не сделано. Сделайте резервную копию ваших исходных файлов перед запуском WiXCop, а затем сравните с хорошим инструментом сравнения. Я использую Beyond Compare .

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