Расширенный установщик, вызывая мой пользовательский MSI с флагом / аргументом через командную строку?
Я создал специальный пакет MSI и работаю с Advanced Installer, чтобы попытаться добавить какой-то аргумент командной строки, "flag"
это может быть вызвано. Когда этот флаг срабатывает, он вызывает цепочку событий в установщике (удаляет определенные файлы, перемещает папки, извлекает zip-файл... И так далее...)
Другими словами, допустим, я сгенерировал exe
из расширенного установщика имени installer.exe
,
Я хочу, из вызова из командной строки installer.exe --triggerEvents
которая вызовет цепочку пользовательских событий внутри самого установщика.
После небольшого исследования я наткнулся на эту очень хорошую статью, которая относится к моему вопросу:
Как передать аргументы командной строки в настраиваемые действия установщика MSI
Но, похоже, что автор строго сосредоточен на MSI, а не на Advanced Installer, я бы предпочел воспользоваться этим приложением, которое я использую.
Можно ли было бы просто вызвать установщик, передав любой аргумент, который я хочу, и получить его с помощью специального действия, используя сеанс? Или есть способ сделать это с ИИ?
1 ответ
Вы должны иметь возможность создать открытое свойство в MSI с помощью AdvancedInstaller (страница "Параметры установки", "Свойства"). Обратите внимание, что открытые свойства должны быть ALL_CAPS, тогда как закрытые свойства могут содержать строчные буквы.
Обратитесь к общему свойству в ваших пользовательских действиях, чтобы получить значение свойства во время выполнения.
При вызове msi из командной строки вы можете установить значение открытого свойства следующим образом:
msiexec.exe /i "C:\MyAwesomeApp.msi" AWESOME_PROP="myValue"
Из вашего описания видно, что вы компилируете MSI в загрузчик. Насколько я понимаю, загрузчик exe передаст аргументы для публичной собственности в MSI от вашего имени, аля:
C:\MyAwesomeApp.exe /i AWESOME_PROP="myValue"
Я обнаружил, что для того, чтобы ваши пользовательские действия могли ссылаться на содержимое открытого свойства и функционировать так, как вы этого хотите, требуется немало проб и ошибок, но это, вероятно, потому, что я не очень хорош в разработке от MSI. В моем случае я обнаружил, что создание небольших тестовых инсталляторов в качестве доказательства концепции более или менее помогает мне отлаживать то, что я пытаюсь сделать. Как только я понял это правильно, я добавляю этот фрагмент в фактический файл AIP, с которым я работаю, и также проверяю его там. Промойте и повторите при необходимости!