Кому надоело навязчивое окно с обновлением — попробуйте следующее.
Проверялось на
Parallels Desktop 26.3.3.
Удалось собрать небольшой скрипт, который приводит настройки Parallels в порядок.
Что делает скрипт:
- закрывает Parallels Desktop;
- создает резервную копию всех изменяемых настроек;
- очищает локальный кэш найденного обновления;
- помечает найденную версию как пропущенную;
- отключает рекламные уведомления об обновлениях;
- возвращает значок Parallels в строку меню macOS;
- перезапускает службу пользовательских настроек macOS;
- запускает Parallels Desktop обратно.
Важно:
Скрипт
НЕ:
- изменяет виртуальные машины;
- трогает TPM;
- трогает NVRAM;
- трогает диск Windows;
- изменяет оборудование виртуальной машины.
Работа происходит только с пользовательскими настройками самого Parallels.
Скрипт
Код:
#!/bin/bash
DOMAIN_PD="com.parallels.Parallels Desktop"
DOMAIN_CONSOLE="com.parallels.desktop.console"
PREF_PD="$HOME/Library/Preferences/com.parallels.Parallels Desktop.plist"
PREF_CONSOLE="$HOME/Library/Preferences/com.parallels.desktop.console.plist"
STAMP="$(date +%Y-%m-%d_%H-%M-%S)"
BACKUP_DIR="$HOME/Desktop/parallels-fix-backup-$STAMP"
mkdir -p "$BACKUP_DIR"
osascript -e 'quit app "Parallels Desktop"' 2>/dev/null || true
sleep 3
pkill -x prl_client_app 2>/dev/null || true
[ -f "$PREF_PD" ] && cp "$PREF_PD" "$BACKUP_DIR/com.parallels.Parallels Desktop.plist.backup"
[ -f "$PREF_CONSOLE" ] && cp "$PREF_CONSOLE" "$BACKUP_DIR/com.parallels.desktop.console.plist.backup"
delete_keys=(
"ProductUpdate.MinorUpdate.DownloadUrl"
"ProductUpdate.MinorUpdate.TransactionId"
"ProductUpdate.MinorUpdate.UpdateDescription"
"ProductUpdate.MinorUpdate.UpdateMD5"
"ProductUpdate.MinorUpdate.UpdatePromoUrl"
"ProductUpdate.MinorUpdate.UpdateSize"
"ProductUpdate.UpdateFromVersion"
"ProductUpdate.UpdateTypeToInstallOnStart"
"ProductUpdate.ConfirmInstall"
)
for key in "${delete_keys[@]}"; do
defaults delete "$DOMAIN_PD" "$key" 2>/dev/null || true
done
defaults write "$DOMAIN_PD" "ProductUpdate.SkippedUpdates.26·4·0-57513" -bool true
defaults write "$DOMAIN_PD" "ProductUpdate.UpdateAvailable.26·3·3-57507" -bool false
defaults write "$DOMAIN_PD" "ProductUpdate.UpdateAvailable.26·4·0-57513" -bool false
defaults write "$DOMAIN_PD" "ProductUpdate.Check for updates automatically" -bool false
defaults write "$DOMAIN_PD" "ProductPromo.ForcePromoOff" -bool true
defaults write "$DOMAIN_PD" "ProductPromo.PromoShowTime" -date "2099-01-01T00:00:00Z"
defaults write "$DOMAIN_CONSOLE" "NSStatusItem VisibleCC Item-1" -bool YES
killall cfprefsd 2>/dev/null || true
open -a "Parallels Desktop" 2>/dev/null || true
osascript -e 'display notification "Parallels settings fixed. Backup saved on Desktop." with title "Parallels Fix"'
Как сделать обычное приложение (.app)
- Открыть Automator.
- Создать новый документ.
- Выбрать Application (Приложение).
- Найти действие Run Shell Script.
- Перетащить его в рабочую область.
- Выбрать Shell: /bin/bash.
- Удалить стандартный текст.
- Вставить приведённый выше скрипт.
- Сохранить как, например:
После этого приложение можно запускать обычным двойным кликом.
Что происходит внутри
Parallels хранит информацию о найденном обновлении не только на сервере, но и локально в файле:
Код:
~/Library/Preferences/com.parallels.Parallels Desktop.plist
Скрипт очищает кэш найденного обновления, выставляет необходимые флаги и восстанавливает настройки интерфейса Parallels.
Также восстанавливается отображение значка Parallels в строке меню macOS, если он исчез.
Дополнительно
Если потребуется, можно отдельно добавить блокировку серверов обновлений через
, но я сознательно не включил это в основной скрипт, так как изменение hosts требует прав администратора.
Если кому-то поможет — отпишитесь, интересно проверить, работает ли это на других версиях Parallels.