I am moving from a Wise Installer to WIX and am using the util:xmlfile to update a configuration xml file.
This works.
<Component Id="config" Guid="*">
<File Id="config" Source="..SourceDesktopprodconfig.xml" KeyPath="yes" Vital="yes" />
<util:XmlFile
Id="_PORT_" File="[INSTALLDIR]prodconfig.xml"
Action="setValue"
Name="Port" Value="[PORT]"
ElementPath="//Configuration/CommConnectionPools/CommConnectionPool"
Sequence='1' />
</File>
</Component>
This does not work.
<Component Id="config" Guid="*">
<File Id="config" Source="..SourceDesktopprod-config.xml" KeyPath="yes" Vital="yes" />
<util:XmlFile
Id="_PORT_" File="[INSTALLDIR]prod-config.xml"
Action="setValue"
Name="Port" Value="[PORT]"
ElementPath="//Configuration/CommConnectionPools/CommConnectionPool"
Sequence='1' />
</File>
</Component>
When the .msi executes with the first component, everything is fine. In the second version, an error is returned «Error 25531. Failed to open XML file…»
As far as I can tell the only difference is the hyphen in the file name.
Any suggestions as to what the difference might be?
asked Nov 5, 2013 at 19:10
3
Try using the component’s id instead of hard-coding the name
[#config] //which will refer to the File Id
instead of
[INSTALLDIR]prod-config.xml
answered Feb 16, 2014 at 1:40
2
The value for the File
attribute for util:XmlFile
tag should refer to the Id
attribute for the File
tag.
In your case this would be
<Component Id="config" Guid="*">
<File Id="config" Source="..SourceDesktopprod-config.xml" KeyPath="yes" Vital="yes" />
<util:XmlFile
Id="_PORT_" File="[#config]"
Action="setValue"
Name="Port" Value="[PORT]"
ElementPath="//Configuration/CommConnectionPools/CommConnectionPool"
Sequence='1' />
</File>
</Component>
In your example since you use the same identifier for both the Component
tag and the File
tag it doesn’t matter. But in general you need to use the Id for the File
tag.
To clarify, if your example used configComponent
and configFile
respectively for Component
and File
identifiers. It would look like the following:
<Component Id="configComponent" Guid="*">
<File Id="configFile" Source="..SourceDesktopprod-config.xml" />
<util:XmlFile
Id="_PORT_" File="[#configFile]"
[snip]
/>
</File>
</Component>
answered Mar 21, 2018 at 3:15
JadeJade
3,1561 gold badge34 silver badges44 bronze badges
Вопрос:
Я перехожу из Wise Installer в WIX и использую утилиту xmlfile для обновления конфигурационного xml файла.
Это работает.
<Component Id="config" Guid="*">
<File Id="config" Source="..SourceDesktopprodconfig.xml" KeyPath="yes" Vital="yes" />
<util:XmlFile
Id="_PORT_" File="[INSTALLDIR]prodconfig.xml"
Action="setValue"
Name="Port" Value="[PORT]"
ElementPath="//Configuration/CommConnectionPools/CommConnectionPool"
Sequence='1' />
</File>
</Component>
Это не работает.
<Component Id="config" Guid="*">
<File Id="config" Source="..SourceDesktopprod-config.xml" KeyPath="yes" Vital="yes" />
<util:XmlFile
Id="_PORT_" File="[INSTALLDIR]prod-config.xml"
Action="setValue"
Name="Port" Value="[PORT]"
ElementPath="//Configuration/CommConnectionPools/CommConnectionPool"
Sequence='1' />
</File>
</Component>
Когда .msi выполняется с первым компонентом, все в порядке. Во второй версии возвращается ошибка “Ошибка 25531. Не удалось открыть файл XML…”
Насколько я могу судить, единственным отличием является дефис в имени файла.
Любые предложения относительно того, какая разница может быть?
Лучший ответ:
Попробуйте использовать идентификатор компонента вместо жесткого кодирования имени
[#config] //which will refer to the File Id
вместо
[INSTALLDIR]prod-config.xml
Ответ №1
Значение атрибута File
для тега util:XmlFile
должно относиться к атрибуту Id
для тега File
.
В вашем случае это будет
<Component Id="config" Guid="*">
<File Id="config" Source="..SourceDesktopprod-config.xml" KeyPath="yes" Vital="yes" />
<util:XmlFile
Id="_PORT_" File="[#config]"
Action="setValue"
Name="Port" Value="[PORT]"
ElementPath="//Configuration/CommConnectionPools/CommConnectionPool"
Sequence='1' />
</File>
</Component>
В вашем примере, поскольку вы используете один и тот же идентификатор для тега Component
и тега File
, это не имеет значения. Но в целом вам нужно использовать Id для тега File
.
Чтобы уточнить, использовали ли ваш пример configComponent
и configFile
для Component
и File
идентификаторов. Он будет выглядеть следующим образом:
<Component Id="configComponent" Guid="*">
<File Id="configFile" Source="..SourceDesktopprod-config.xml" />
<util:XmlFile
Id="_PORT_" File="[#configFile]"
[snip]
/>
</File>
</Component>
Значение для File
атрибут для util:XmlFile
тег должен относиться к Id
атрибут для File
тег.
В вашем случае это будет
<Component Id="config" Guid="*">
<File Id="config" Source="..SourceDesktopprod-config.xml" KeyPath="yes" Vital="yes" />
<util:XmlFile
Id="_PORT_" File="[#config]"
Action="setValue"
Name="Port" Value="[PORT]"
ElementPath="//Configuration/CommConnectionPools/CommConnectionPool"
Sequence='1' />
</File>
</Component>
В вашем примере, так как вы используете один и тот же идентификатор для обоих Component
тег и File
пометить это не имеет значения. Но в целом вам нужно использовать идентификатор для File
тег.
Чтобы уточнить, если ваш пример использовал configComponent
а также configFile
соответственно для Component
а также File
идентификаторы. Это будет выглядеть следующим образом:
<Component Id="configComponent" Guid="*">
<File Id="configFile" Source="..SourceDesktopprod-config.xml" />
<util:XmlFile
Id="_PORT_" File="[#configFile]"
[snip]
/>
</File>
</Component>
Не удается открыть файл Office Open XML? На самом деле, это редкая проблема, которая случается не так часто.
Office Open XML представляет собой не единый формат документов, а целую серию известных форматов от компании Майкрософт. Туда входят:
«.docx»;
«.xlsx»;
«.pptx».
Подробнее, что такое Office Open XML
Сокращенно формат Office Open XML обозначается как «.ooxml». Он был внедрен в «офисный пакет» компании Майкрософт начиная с Microsoft Office 2007. Этот формат несет в себе несколько классных особенностей, например:
Улучшенное сжатие файлов. Office Open XML использует zip-сжатие для сохранения документов, что улучшает процент сжатия в несколько раз. На деле это существенно экономит место на диске, когда приходится хранить большой объем документов или отправлять документы по электронной почте.
Файлы легко восстанавливаются при повреждениях. Из-за особенной структуры хранения информации в этом формате такие документы открываются даже в тех случаях, когда какой-либо элемент документа поврежден. Например, если таблица в документе повреждена, вы все равно сможете его открыть и восстановить таблицу.
Дополнительные расширения. Часть расширений для работы с документами в Microsoft Office доступна только для формата Office Open XML.
Улучшенная совместимость. Формат Office Open XML подразумевает, что документ такого формата может быть легко открыт в любом продукте «офиса». И самое важное, что такой формат совместим между разными версиями «офисных продуктов».
И др.
Но даже у такого, казалось бы, качественного продукта знаменитой компании случаются сбои. Во время таких сбоев пользователи получают сообщение: «Не удается открыть файл Office Open XML».
Почему появляется ошибка «не удается открыть файл Office Open XML» в продуктах Office
Чаще всего такая ошибка связана с внутренним содержимым. Но самое интересное, что она возникает совершенно внезапно в тот момент, когда ее меньше всего ждешь. В любом случае такая ошибка возникает при ошибке в последнем редактировании документа в формате Office Open XML.
На самом деле, заострять свое внимание и просто гадать, почему возникли проблемы, не стоит. Лучше приступать к поиску проблем и решать их, тем более что у всех вероятных причин возникновения этой ошибки алгоритм исправления один.
Ошибка «не удается открыть файл Office Open XML»: как исправить
Чтобы исправить эту ошибку, для начала нужно провести анализ проблемного документа. Найдя проблемный фрагмент, его можно попытаться восстановить. Документ в формате «.ooxml» может содержать следующие виды информации:
обычный текст;
графическое изображение;
ссылки на веб-сайты;
таблицы с информацией;
различные диаграммы;
и многое другое.
В общем, документ в формате «.ooxml» может содержать любой компонент какого-либо продукта MS Office.
Методы исправления ошибки:
Программа «Notepad++». Отлично сработает в тех случаях, если документ в формате Office Open XML является текстовым. Notepad++ в этом случае легко откроет его и поможет восстановить текстовые данные, даже если Word не смог этого сделать. Но у такого способа есть один минус — Notepad++ не поддерживает «текстовое форматирование». Простым языком: у вас перед глазами будет только текст без заголовков и абзацев — все это нужно будет восстановить «вручную», зато сам текст сохранится полностью.
Программа «WordPad». Это малоизвестный встроенный в операционную систему Windows текстовый редактор. Он не функциональный и не имеет таких возможностей, как Notepad++ или Word, поэтому им мало кто пользуется. Но он всегда рядом и может открыть документ, когда другие «офисные программы» пишут: «не удается открыть файл Office Open XML». Наведите на проблемный файл курсор и откройте меню «Открыть с помощью…». Там найдите WordPad и откройте свой документ. Кстати, он работает с текстом, изображениями и ссылками, поэтому поможет восстановить данные этих видов.
Программа «XMLPad». Это сторонняя программа, которую нужно скачать из интернета. Она простая и бесплатная, но в вашем проблемном случае должна помочь. Она способна открыть файлы разных форматов, в том числе и формата «Office Open XML». Обычно она открывает этот формат даже в тех случаях, когда «родные» программы выдают ошибку. Но вся ее прелесть в том, что она не просто открывает проблемный документ, а еще и показывает, в какой строке и каком месте возникла ошибка, мешающая «родным» программам.
Другие «офисы». Иногда ошибка «не удается открыть файл Office Open XML» решается очень просто. Нужно поменять «офисный пакет». Чаще всего такая ошибка появляется именно у MS Office, поэтому попробуйте открыть проблемный документ в Libre Office или Open Office. Кстати, оба «офисных пакета» бесплатны и некоторым пользователям помогли решить проблему с этой ошибкой.
Заключение
Практика показала, что чаще всего ошибка «не удается открыть файл формата Office Open XML» появляется в Microsoft Office, когда в документе преобладают технические формулы, а сам документ разрастается до больших размеров. Это указывает на то, что с большими размерами и формулами у «офисного пакета» есть некоторые проблемы.
Понятно, что от формул в документе никуда не денешься, если они там должны быть. Но вот с «большими размерами» документа можно бороться. Все, что нужно делать, — это заранее сохранять небольшие резервные части своей работы. Например, вы работаете над курсовой или дипломной работой, а может, пишете книгу. В этом случае написали 50-100 страниц работы, тогда сохраните ее отдельным файлом и дальше продолжайте работу. Потом еще 50-100 страниц — опять сохраните отдельным файлом. В этом случае, если в конце с документом возникнет какая-то проблема, тогда у вас всегда будут работающие копии на руках.
Помогаю со студенческими работами здесь
Не устанавливается драйвер на amd (или устанавливается?)
Здравствуйте. Проблема такая. Устанавливаю драйвер на amd r9 380, и в момент установки гаснет экран…
Не устанавливается Windows (Ubuntu устанавливается)
точнее убунту не устанавливается а доходит до точки выбора раздела и форматирование, а виндовзы(Xp,…
Wi-Fi в офис
Дано:
Оставшаяся после предыдущих арендаторов офиса патч панель с уже присоединенными идущими от…
офис 7
установленный офис 7 не запускается ни водном из приложений, при открытии документа в ворде или…
Офис!
Правила
5.7. Запрещено создание и распространение вредоносного ПО (вирусов), кряков и взлома…
офис
Подскажите где можно скачать установочники на офисы 2003, 2007, 2010 с кодом активации
Искать еще темы с ответами
Или воспользуйтесь поиском по форуму: