Создайте сценарий оболочки с пользовательским значком с правами администратора

#macos #applescript

#macos #applescript

Вопрос:

Я использую AppleScript для запуска скрипта оболочки от имени администратора.

 do shell script custom_command with prompt custom_prompt with administrator privileges
  

который выдает мне это приглашение, это нормально, но я хотел бы иметь возможность изменить значок на что-то другое, кроме значка терминала. Будем признательны за любую помощь.

приглашение

Комментарии:

1. Значок значка появляется из любого приложения, использующего команду.

2. @red_menace, который я использую osascript -e , нет способа изменить это?

3. Нет, оболочка — это то, что в конечном итоге запускает сценарий, так что это значок, который использует система. Вы можете вызвать вспомогательное приложение, которое выполняет сценарий оболочки, но это кажется немного трудоемким.

4. @red_menace Мне действительно было бы интересно это. Как бы мне это сделать?

Ответ №1:

Значок в диалоговом окне аутентификации появляется из приложения, использующего команду.

Чтобы получить пользовательский значок для значка, вы можете использовать вспомогательное приложение AppleScript для запуска вашего сценария, но если это osascript все, что вы делаете, вы можете просто делать все с помощью приложения (в противном случае все, что вы делаете, это используете osascript для запуска AppleScript, который запускает osascript ). Чтобы создать приложение для osascript , отредактируйте свой сценарий в редакторе сценариев, например:

 do shell script "echo 'this is a test' >> ~/Desktop/Testing.txt" with administrator privileges
  

затем сохраните его как приложение (оставьте параметры непроверенными). Переименуйте копию файла значков, который вы хотите использовать, в applet.icns, откройте пакет приложений и замените существующий файл значков в /Contents/Resources/. Затем вы можете запустить приложение с терминала, используя open /path/to/your/app

Основным значком по-прежнему будет висячий замок, но значок теперь будет значком вашего приложения.

Передача аргументов приложению немного отличается от osascript, но немного AppleScriptObjC заботится об этом:

 use framework "Foundation"
use scripting additions

# the first argument item is the applet/droplet executable path, so we'll just skip that
set args to rest of (arguments of current application's NSProcessInfo's processInfo() as list)

if args is not {} then
  do shell script "echo " amp; first item of args amp; " >> ~/Desktop/Testing.txt" with administrator privileges
end if
  

Вы можете запустить это с помощью open /path/to/your/app --args “this is a test”