Добавить Zip файлы в TARGETDIR в WiX - PullRequest
0 голосов
/ 19 сентября 2018

В моем решении Visual Studio 2017 у меня есть проект установки WiX 3, который извлекает из вывода несколько других проектов (библиотеки, исполняемые файлы, ресурсы, контент).В структуре каталогов для решения, но не добавленной в решение как проект, у меня есть проект, который компилирует некоторые расширения браузера с помощью веб-пакета.Этот проект веб-пакета выводит в папку артефактов с подкаталогами для каждого браузера.Внутри каждого подкаталога находится скомпилированное расширение с номером версии, включенным в имя файла, например:

  • артефакты
    • Chrome
      • myextension-0.1.0.0.zip
      • myextension-0.1.0.1.zip
      • myextension-0.1.0.2.zip

Во время компиляции, в конечном итогеЯ хочу включить файлы, соответствующие номеру версии, т.е. myextension - \ $ (var.VERSION) .zip, в пакет MSI, чтобы он мог быть помещен в папку приложения во время установки.Даже когда я жестко кодирую номер версии, то есть myextension-0.1.0.2.zip, в компонент, я получаю ошибку от light:

LGHT0001: The system cannot find the path specified. (Exception from HRESULT: 0x80070003)

Я получаю каталог с определением, подобным этому:

<?define ChromeTargetDir=$(var.SolutionDir)Extensions\artifacts\chrome\?>

И тогда мой компонент выглядит следующим образом:

<Component Id="ChromeExt"
             Location="local"
             Guid="GUID_HERE">
    <CreateFolder/>
    <File Id="ChromeExtension"
          Name="myextension-0.1.0.2.zip"
          Source="$(var.ChromeTargetDir)myextension-0.1.0.2.zip"
          KeyPath="yes"/>
</Component>

Когда я смотрю в wixobj, созданный свечой, я вижу полный правильный путь, замененный для файла, в котором он находится на моемsystem:

<field>C:\Users\me\source\repos\mysolution\Extensions\artifacts\chrome\myextension-0.1.0.2.zip</field>

Итак, мой вопрос: как правильно включить «произвольные» файлы в мой проект WiX?

1 Ответ

0 голосов
/ 20 сентября 2018

1) Решение против Project Dir : Первое, что я бы попробовал, это заменить $(var.SolutionDir) на $(var.ProjectDir) и попробуйте перекомпилировать.Я буду следить, если проблема в чем-то другом.Давайте сначала исключим это.

2) Цитаты : я также использую кавычки вокруг моих путей:

<?define ChromeTargetDir="C:\Sources\Packages\MyChromeExtension\Files\" ?> 

3) Переменные проекта : И, наконец, вам нужно добавить ссылку в ваш проект для работы с ссылками на проект и переменными: WiX:Как использовать относительный путь к SolutionDir .


Неясен : Более скрытыми причинами могут быть отсутствие прав доступа (файл не виден в процессе сборки, а light.exe - работает под именем?). Поврежден файл или папка?(попробуйте заменить).И все, что может сговориться против вас. Заблокировано файлов?

...