Как указать путь установки MSI-файлу в cmd?
На работе понадобилось установить программулю в конкретную директорию, т.к. локальные админы не будут иметь доступ к папке Program Files
. Устанавливается автоматически через Ansible, поэтому надо было прописать какой-то аргумент для этого.
Вкратце, MSI-установщик — это база данных со своей внутренней файловой системой, и каждый генератор установщик делает эту базу данных по-своему. Поэтому под каждый генератор установщиков будет своё имя переменной. Тем не менее, вот список частых имён этих переменных:
APPDIR
(напр. для Advanced Installer)TARGETDIR
INSTALLDIR
INSTALLFOLDER
INSTALLLOCATION
APPLICATIONFOLDER
Но лучше сразу запустить установщик и поискать название генератора. Оно может быть написано здесь:
После следует погуглить, как указать папку для установки для конкретного генератора. Обычно имена эти совпадают с именами при создании самих установщиков, и документация к генераторам должна помочь. В моём случае был APPDIR
. Т.е. для запуска MSI с этим параметром понадобится следующая команда:
msiexec /i "C:\PackageSource\Setup.msi" APPDIR="C:\PackageName\" /qb
Для Ansible получается код вида:
- name: Install the package
win_package:
path: C:\PackageSource\Setup.msi
arguments: APPDIR=""
Здесь у меня {{installDir}}
— переменная, например C:\PackageName\
. Кавычки вокруг переменной фиксят проблемы с пробелами в путях к файлам.