Привет ! Меня зовут Ксавье Жувено, и в этом небольшом посте мы увидим, как исключить попадание исполняемого файла в пакет Chocolatey.
Самореклама: Другие статьи вы можете найти на моем сайте 😉
Проблемный
При создании пакетов Chocolatey или взаимодействии с ними вы можете оказаться в ситуации, когда программа, установленная через Chocolatey, либо не отображает, либо завершает свой процесс. Это может быть очень неудобно, так как программа делает то, что вы от нее просите 😝
Проблема возникает из-за функции Chocolatey EXECUTABLE SHIMMING, которая не всегда хорошо настроена, а затем не ждите, пока ваша программа завершит работу. Обычно это происходит, когда программа имеет графический интерфейс, но вы хотите, чтобы она выполняла какой-то процесс через командную строку, не обращая внимания на графический интерфейс.
Мы собираемся подробно описать 2 решения: одно, если вы являетесь пользователем пакета Chocolatey, которое является обходным решением для поведения шоколадного пакета, и другое, если вы являетесь сопровождающим пакета Chocolatey, чтобы сделать ваш пакеты ведут себя адекватно 😉
Решение
Обходной путь
Решение, как пользователь пакета Chocolatey, состоит в том, чтобы передать конкретную опцию в командную строку, которую вы используете:
my_program.exe --shimgen-waitforexit
Флаг shimgen-waitforexit как раз для таких ситуаций. Но я также рекомендую вам уведомить сопровождающих пакета, чтобы они могли внедрить приведенное ниже решение непосредственно в самом пакете.
Правильная коррекция
Если в вашем пакете есть такая ошибка, есть способ исправить ее навсегда 🙂 Включив следующую строку в ваш скрипт установки, вы сможете исключить исполняемые файлы вашего пакета от получения прокладок, что исправит проблему. :
Get-ChildItem $PSScriptRoot\*.exe | ForEach-Object { New-Item "$_.ignore" -type file -force | Out-Null }
Давайте немного опишем, что здесь происходит!
Во-первых, мы начинаем с получения всех файлов .exe
в папке установки пакета Chocolatey. Затем для каждого найденного исполняемого файла мы создаем новый пустой файл с тем же именем, но с расширением .exe.ignore
. Это расширение сообщит Chocolatey, что теперь нужно подставить исполняемый файл и одновременно исправить нашу проблему 😉
Спасибо всем за прочтение этой статьи, и до моей следующей статьи, хорошего дня 😉
Интересные ссылки
- Документация PSScriptRoot
- Документация Get-ChildItem
- Документация по новым предметам
- Out-Null документация
- Документация ForEach-Object
- shimgen-waitфорекс опцион
- шоколад без исполняемого файла
- 10xlearner сайт
Первоначально опубликовано на http://10xlearner.com 12 февраля 2021 г.