WiX 2 : я определенно перенесу любые источники WiX 2.0 в WiX 3 или WiX 4. Я использую только WiX 3. Я думаю, что вы можете решить эту конкретную проблему, поместив свой источник WiX на диету, а не углубляться в предмет или проблему. Работа с 8.3 именами файлов - это просто трата времени, если вы спросите меня. Избегайте, если можете. Мне жаль разработчиков, которым приходится иметь дело со всеми этими старыми, устаревшими вещами в Windows.
Упрощенная разметка WiX : Другими словами, я думаю, что эту проблему можно «устранить, а не исправить». Так что терпите меня: мне нравится уменьшать исходные файлы WiX до самого необходимого и разрешать автоматическое добавление максимально возможного количества полей компилятором (candle.exe
) и компоновщиком (* 1014) *light.exe
). Это возможно сделать, потому что многие поля являются просто «шаблонными» или избыточными и всегда будут «меняться вместе». Они также могут быть сгенерированы автоматически.
Вот краткое описание того, как вы можете удалить лишние атрибуты XML в новых источниках WiX: Синтаксис для направляющих в WIX? (рекомендуется читать - должно быть быстрым).
Суть в том, что вы можете сделать это:
<Component>
<File Source="..\File.dll" />
</Component>
вместо старшего, более сложный:
<!-- Sample guid below, do not copy paste -->
<Component Id="File.dll" Guid="{12345678-1234-1234-1234-123456789ABC}">
<File Id="File.dll" Name="File.dll" KeyPath="yes" Source="..\File.dll" />
</Component>
Все отсутствующие атрибуты будут автоматически заполнены WiX - что упростит реализацию любых изменений в компиляторе и компоновщике, которые обнаружит ваш "более тонкий источник". Если по какой-либо причине потребуется атрибут, вам будет предложено добавить его с помощью компилятора / компоновщика / документации.
Решение? : Соответственно, пожалуйста, попробуйте удалить все Name attribute
и посмотрите, решит ли это вашу проблему. Я бы также удалил как можно больше других полей (может облегчить будущую миграцию - возможно).