Как заставить wix обновить файл, прежде чем манипулировать им при обновлении - PullRequest
1 голос
/ 30 августа 2010

У меня есть установщик wix, который установит файл XML, а затем изменит его. Установка отлично работает. Сегодня мне нужно было добавить пару узлов в этот XML-файл. Поэтому я изменил исходный файл, а затем добавил некоторые дополнительные инструкции в wix для назначения значений этих элементов.

Ну, я каждый раз получаю сообщение о том, что не удается найти узел. Я смотрю и вижу, какой файл у него есть в каталоге, и у него все еще есть более старый файл, у которого не было узла. Как я могу сказать ему сначала заменить файл XML, а затем изменить его? Я не хочу использовать «CreateElement», потому что я не знаю, как не создавать элемент, если он уже существует (еще не пробовал, так что, возможно, он будет работать). Кроме того, я хочу, чтобы мой XML-файл был определением конфигурации.

Вот пример моего XML:

      <Component Id="MyProgExeConfigComponent" Guid="*">
    <File
      Id="MyProgExeConfig"
      Name="MyProg.exe.config"
      DiskId="1"
      Source="../Published/MyProg/MyProg.exe.config"
      PatchWholeFile="yes"
      KeyPath="yes"/>
    <util:XmlFile
      Id="MyProgExeConfigUser"
      Action="setValue"
      Permanent="yes"
      File="[INSTALLLOCATION]\MyProg.exe.config"
      ElementPath="/configuration/appSettings/add[\[]@key='UserName'[\]]"
      Name="value"
      Value="[USER]"/>
    <util:XmlFile
      Id="MyProgExeConfigPassword"
      Action="setValue"
      Permanent="yes"
      File="[INSTALLLOCATION]\MyProg.exe.config"
      ElementPath="/configuration/appSettings/add[\[]@key='Password'[\]]"
      Name="value"
      Value="[PASSWORD]" />

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 30 августа 2010

Установщик Windows, вероятно, не перезаписывает файл, потому что у вас INSTALLMODE = omus и даты создания и изменения XML различаются.

Является ли файл XML файлом ключа своего собственного компонента?Если это так, попробуйте использовать атрибут File @ DefaultVersion, чтобы обмануть установщика Windows, заставив его думать, что новый файл имеет версию # (мы называем это «ложью версии» при поиске в Google) и, следовательно, превосходит файл без версии. Ваш файл будет перезаписан, а затемваши обновления XML могут быть применены оттуда.

0 голосов
/ 24 мая 2011

Вот некоторые дополнительные параметры: Принудительное обновление файла, который был изменен во время первоначальной установки .Лично мне больше всего нравится подход с сопутствующим файлом.

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