TLDR: подключаемый модуль jdkPackager не может найти мой пользовательский файл конфигурации WiX. Как я могу правильно добавить его в свой путь к классам, чтобы плагин мог его найти?
Я использую sbt 0.13.16 и sbt-native-packager 1.0.2.
Я использую плагин jdkPackager для создания msi. При запуске sbt jdkPackager:packageBin
мой msi успешно создается и устанавливается. Что мне нужно, так это теперь использовать пользовательский файл конфигурации WiX, чтобы установить WiX upgradeCode и добавить элемент MajorUpgrade для обработки обновлений.
Вывод команды jdkPackager содержит следующую инструкцию:
Config files are saved to <MY_APP_DATA>\Local\Temp\fxbundler2011134430419607265\windows. Use them to customize package.
Using default package resource [WiX config file] (add package/windows/my-app-name.wxs to the class path to customize)
Я сделал копию файла wxs по умолчанию, который был создан и добавлен в указанную выше временную папку, и отредактировал ее, чтобы она содержала элементы upgradeCode и MajorUpgrade.
Моя проблема: я пытался разместить этот файл во многих областях структуры моего проекта, чтобы добавить его в мой путь к классам, но упаковщик никогда не находит его и всегда выводит, что он использует файл конфигурации по умолчанию.
Некоторые места, которые я пробовал:
- src/main/package/windows/имя-моего-приложения.wxs
- src/main/deploy/package/windows/имя-моего-приложения.wxs
- ./package/windows/имя-моего-приложения.wxs
- src/main/resources/package/windows/имя-моего-приложения.wxs
- и многие другие... подобные вариации, со структурой package/windows или без нее.
Я также попытался вручную добавить файл или родительский каталог в мой unmanagedClasspath в моем файле build.sbt. то есть:
unmanagedClasspath in Runtime += baseDirectory.value / "src/main/deploy/"
После упаковки я использовал sbt "show runtime:fullClasspath"
для проверки того, что файл wxs и/или содержащий его каталог включены в мой путь к классам. Я также проверил каталог target/universal/stage, и файл конфигурации и структура каталогов копируются туда при включении в папку ресурсов. Вроде ничего не влияет.
Я использовал эти основные ресурсы:
- http://www.scala-sbt.org/sbt-native-packager/formats/jdkpackager.html (документы)
- https://github.com/sbt/sbt-native-packager/tree/e4e6504c1f6a75fb346958f68d0f7c13fec26877/src/main/scala/com/typesafe/sbt/packager/jdkpackager (исходный код)
- https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/self-contained-packaging.html#BCGICFDB (настройка пакета с использованием вставных ресурсов)
- http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html (документация по основному обновлению WiX)
- где следует я помещаю ресурсы установщика (файл wxs, dmg-script, значок) и как настроить maven antrun при развертывании автономного приложения (несколько немного похожих вопросов SO для сборок ant)
Примечание: я открыт для решения этой проблемы другими способами. Я попытался добавить wixProductUpgradeId и wixProductId в свой build.sbt, но они, похоже, не используются для плагина jdkPackager. Я также пошел по пути использования плагина Windows, но, насколько я понял, исполняемый файл так и не был создан. Вместо этого msi просто попытался запустить (ошибочный) скрипт летучей мыши.
Буду признателен за любую помощь/опыт/совет. Спасибо!