Как сослаться на элемент File внутри файла wxs, сгенерированного Heat.exe в Wix

Я собираюсь создать настройку для своего веб-проекта. Я использую http://blog.bartdemeyer.be/2013/10/create-an-installer-for-website-with-wix-part-1/ в качестве ссылки. В середине статьи автор создает файл с именем WebSiteContent.wxs с помощью heat.exe:

<Target Name="Harvest">
<!-- Harvest all content of published result -->
<Exec
    Command='$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg MyWebWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)'
    ContinueOnError="false"
    WorkingDirectory="." />
</Target>

После запуска msbuild файл содержит следующее содержимое:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <!--...-->
  <Fragment>
    <ComponentGroup Id="MyWebWebComponents">
      <!--...-->
      <Component Id="cmpCDB7F4EFDEF1E65C3B12BEBAD7E4D7EA" Directory="INSTALLFOLDER" Guid="{7EA5DB39-513D-482B-9FDC-2F16FCE5E712}">
        <File Id="fil8994620207C22CA15AF75ACDD6420C79" KeyPath="yes" Source="$(var.publishDir)\Web.config" />
      </Component>
    </ComponentGroup>
  <!--...-->
  </Fragment>
</Wix>

Я хочу изменить значение содержимого файла web.config, как описано в разделе Изменить значения узла XML из WiX но я не знаю, как добавить ссылку вне файла WebSiteContent.wxs на элемент fil8994620207C22CA15AF75ACDD6420C79.

Я знаю, что могу добавить xml-скрипт в файл WebSiteContent.wxs. Но поскольку в каждой сборке он будет очищаться, я не хочу менять файл WebSiteContent.wxs в каждой сборке.


person Seyed Morteza Mousavi    schedule 15.04.2016    source источник


Ответы (1)


Используйте идентификатор файла с префиксом # в свойстве, как показано в примере, на который вы ссылаетесь. Идентификаторы файлов, генерируемые теплом, стабильны по отношению к спецификации их местоположения.

Если это делает его нечитаемым, вы можете задать жару и XSL, чтобы изменить идентификатор файла на фиксированное значение.

person Tom Blodget    schedule 16.04.2016
comment
Спасибо за вашу помощь. Можете ли вы помочь мне, как я могу добавить его в файл Product.wxs? В каком теге? - person Seyed Morteza Mousavi; 17.04.2016
comment
@TomBlodget, можете ли вы привести пример этого, потому что это кажется недопустимым синтаксисом. Я использовал что-то вроде ‹File Id=[#filD4A27A27D20D3D734B279B4F21754836]..., и это не работает. Компилятор WiX жалуется, что это недопустимый идентификатор. - person Ultratrunks; 08.12.2016
comment
@SeyedMortezaMousavi @Ultratrunks Он имел в виду, что вы можете получить путь к файлу с помощью тега [#fil8994620207C22CA15AF75ACDD6420C79]. См. #filekey. - person Roi Danton; 29.11.2017