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
Pinpoint : не могли бы вы попытаться выполнить команду для подмножества файлов или один раз для каждого файла, чтобы вы могли определить, какой файл вызывает реальную проблему? Другой способ найти это - запустить все файлы (используйте ваш текущий подход с использованием подстановочных знаков), а затем посмотреть, какие файлы не были обновлены?
Неизмененные файлы? : Как я уже говорил выше, пожалуйста, попробуйте определить, какие файлы не были обновлены. Если есть. Неизмененные файлы могут вызвать ошибки, которые прерывают операцию обновления?
Подавлять ошибки : Я не знаю ни одного примера файлов настроек, кроме того, что можно найти в документации, с которой я связывался ранее . Давайте попробуем создать простой файл настроек, чтобы игнорировать два типа ошибок:
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
Разрешение : Короткий ответ: я не знаю, почему у вас возникли неразрешимые проблемы в этот раз. Как уже говорилось, попытайтесь сузить проблему до одного файла - или группы файлов - если возможно, используя приведенные выше рекомендации.
Исправление, новое исправление следует ( практикуя тавтологии ): Если вы снова запустите команду для того же файла (-ов), ошибки исчезли? Кажется, что файл 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 .