Подтвердить что ты не робот

Относительный путь WiX к исходному файлу

У меня есть простое решение для моего проекта, которое хорошо работает. Но я не могу понять, как сделать исходные пути относительными. Может кто-нибудь мне помочь?

  <Component Id="Bla.exe" Guid="*">
    <File Id="Bla.exe" Source="D:\Projects\Bla\Bla\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/>
  </Component>

Как я могу сделать Path относительно решения Wix? WiX и все необходимые файлы находятся в одном решении.

4b9b3361

Ответ 1

Вы можете использовать относительный путь следующим образом:

    <File Id="Bla.exe" Source="..\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/>

ИЛИ

Вы можете добавить файл конфигурации в свой проект, чтобы определить общие переменные. Для этого добавьте в проект новый файл "WiX Include", назовите его config.wxi. Затем в вашем файле include вы можете определить переменную SourceDir следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <?define SourceDir = "D:\Projects\Bla\Bla\bin\Debug" ?>
</Include>

Теперь в вашем .wxs файле вы можете добавить ссылку на файл конфигурации вверху, например:

<?xml version="1.0" encoding="UTF-8"?>
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
 <?include "config.wxi"?>

Затем просто ссылайтесь на свою переменную SourceDir следующим образом:

<File Id="Bla.exe" Source="$(var.SourceDir)\Bla.exe" KeyPath="yes" Checksum="yes"/>

Кроме того, есть несколько встроенных переменных проекта WiX, которые вы можете использовать.

Ответ 2

Есть много способов сделать это, но лично мне нравится делать проекты приложений для приложений в разных решениях. Сначала я создаю решение приложения и использую команды postbuild для публикации содержимого в папку развертывания.

В моих проектах установщика я устанавливаю $(var.SourceDir) = "..\deploy", а затем $(var.SourceDir)\foo.exe для исходного пути.