Относительные пути в проектах инсталлятора
Предположим, что у вас возникла ситуация, когда вы хотите использовать хранить какие-то файлы для инсталляции рядом с .ci файлом проекта. Это могут быть как графические или служебные файлы, так и файлы самого приложения. Это удобно в том случае, когда проект необходимо перемещать и создавать инсталляции на других компьютерах. Достаточно скопировать необходимую директорию где расположен проект и запустить его на другой машине. В этом случае логично использовать относительные пути ( sufolder\*.*, ..\subfolder2\myfile.txt), но при создании установки у инсталлятора CreateInstall текущая директория не совпадает с директорией, где расположен файл проекта и она также может меняться в процессе установки.
Для решения этой задачи необходимо использовать глобальную переменную $prjpath$, которая соответствует полному пути до текущего проекта инсталляции. У глобальных переменных есть две особенности:
- Глобальные переменные подставляются перед созданием установки.
- Их можно использовать в любых полях вашего проекта.
Предположим вы имеете следующую директорию с файлом проекта
c:\myprojects\myapp myapp.ci myappext.g images\myimage.jpg images\logo.png source\myapp.exe source\myapp.dat
В этом случае вы можете указать графические элементы для диалогов как
$prjpath$\images\myimage.jpg $prjpath$\images\logo.png
А исходные файлы устанавливаемого приложения в команде Установочные файлы как
$prjpath$\source\*.* или $prjpath$\source\myapp.*
Предположим файл myappext.g содержит дополнительные функции на языке Gentee для вашей установки. Это например могут быть обработчики событий для диалоговых окон. В этом случае в команде Исходный код вам достаточно подключить файл следующим образом
include : $"$prjpath$\myappext.g"
Вы можете скопировать или перенести директорию myapp в любое место на этом компьютере или другом компьютере, но ваш проект останется полностью рабочим.
Аналогично можно использовать другие глобальные переменные: $exepath$ - полный путь к директории где установлен CreateInstall, $userpath$ - директория пользователя.