
Estou tentando escrever um script de shell simples para o OS X 10.10, para instalar uma lista de aplicativos para os novos Macs que estamos recebendo. Só quero iniciar cada instalador, um de cada vez, para instalar cada aplicativo. Estou usando um script bash, que funciona bem, exceto em algumas instalações, estou apenas chamando o instalador da GUI e instalando dessa forma clicando em Próximo, Próximo Próximo... porque esse aplicativo específico não foi instalado corretamente através do terminal. (o que é bom)
Meu problema é que, quando o script abre o instalador da GUI do Aplicativo A, ele continua executando o script abrindo os próximos comandos da linha. O que eu quero é que o script espere para executar o próximo comando enquanto a janela do instalador estiver aberta. O Windows DOS funciona desta forma, onde você pode criar um arquivo em lote e ele não executará a próxima linha até que a primeira instalação seja concluída. Então, estou procurando um comportamento semelhante.
Eu tentei algumas coisas lendo, mas nenhuma delas funcionou. Como você pode ver, os locais onde coloquei o comando "wait" são onde desejo aguardar a conclusão do instalador da GUI.
#!/bin/bash
# Install Script for OS X BYOD Laptops
# Installing Office 2016
open /Volumes/USB30FD/packages/Microsoft_Office_2016_Volume_Installer.pkg
wait
# sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Office_2016_Volume_Installer.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_AutoUpdate_3.2.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Excel_15.15.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_OneNote_15.15.1_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Outlook_15.15.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_PowerPoint_15.15.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Word_15.15.0_Updater.pkg -target /
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft Word.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft Excel.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft PowerPoint.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft Outlook.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
killall -HUP Dock
# Install ShareFile\
sudo cp -r /Volumes/USB30FD/apps/ShareFile.app /Applications/
wait
open -a /Applications/ShareFile.app
wait
# Install Absolute Computrace
# sudo installer -verboseR -pkg /Volumes/USB30FD/packages/RPClient.pkg -target /
open /Volumes/USB30FD/packages/RPClient.pkg
wait
open /Volumes/USB30FD/Ctclient103319-304806/ctmweb.app
# Install Symantec Endpoint Protection
# Run the GUI installer instead: open /Volumes/USB30FD/apps/Additional\ Resources/SEP.mpkg
sudo installer -verboseR -pkg /Volumes/USB30FD/apps/Additional\ Resources/SEP.mpkg -target /
wait
/Library/Application\ Support/Symantec/LiveUpdate/LUTool
# Install Trend Disk Encryption
open /Volumes/USB30FD/packages/Trend\ Micro\ Full\ Disk\ Encryption.pkg
Sou bastante novato quando se trata de scripts de shell, então quanto mais simples, melhor. Obrigado!
Responder1
O Mac OS X open
possui uma opção -W
ou --wait-apps
que pode ser relevante:
% open -h
...
-W, --wait-apps Blocks until the used applications are
closed (even if they were already running).
Não tenho certeza em qual versão do sistema operacional eles adicionaram isso.