Как добавить приложение как исключение брандмауэра в установщик WiX
У меня есть установщик с большим количеством файлов для установки. Я использую heat.exe, чтобы собрать все файлы. Эта тепловая команда на самом деле является частью моего скрипта сборки, за которой следуют другие команды, такие как Candle.exe и light.exe. Теперь мое приложение test.exe также собирается с автоматически сгенерированным GUID и идентификатором компонента. Как я могу добавить это конкретное приложение в качестве исключения брандмауэра. Проблема заключается в том, что каждый раз, когда я собираю установщик с использованием сценария, будет создаваться новый сборочный файл с новыми идентификаторами компонентов. Какие-либо предложения?
1 ответ
heat
принимает аргумент преобразования XSL для изменения его вывода любым способом, который вам необходим. Простая таблица стилей XSL может добавить элемент к определенному File
элемент выбран через XPath.
Это предполагает, что есть только test.exe
в вашем heat
запустить. Если это не так, измените XPath в match
атрибут:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix='http://schemas.microsoft.com/wix/2006/wi'
xmlns:fire='http://schemas.microsoft.com/wix/FirewallExtension'
xmlns='http://schemas.microsoft.com/wix/2006/wi'
exclude-result-prefixes='wix'
>
<xsl:output method="xml" indent="yes" />
<xsl:template match="//wix:File[contains(@Source,'\test.exe')]">
<wix:File>
<xsl:copy-of select="@*" />
<fire:FirewallException Id='test.exe' Name='Test Server' IgnoreFailure='yes'>
<xsl:comment> localhost won't work here </xsl:comment>
<fire:RemoteAddress>127.0.0.1</fire:RemoteAddress>
</fire:FirewallException>
<xsl:apply-templates select="node()" />
</wix:File>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:comment>!!!DO NOT EDIT!!! Generated by heat.exe and FirewallExceptions added.</xsl:comment>
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>