Как подавить окно консоли системным вызовом из Abode Bridge Extendscript? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть приложение-скрипт, написанное на Extendscript, которое работает в Adobe Bridge. Я встроил некоторую графику в виде текста в кодировке base64 и использую системные функции как на Mac, так и на Windows для записи реальных графических файлов. Я использую вызов app.system () в своем скрипте (openSSL на Mac, certutil на Win.)

На Mac я получаю тихое выполнение команды. В Windows появляется окно консоли для каждой выполняемой команды. Я ищу способ предотвратить появление окна консоли. В противном случае скрипт работает отлично.

В документации Microsoft упоминается опция -silent, но она не работает; это на самом деле нарушает сценарий. Добавление "> nul" к команде ничего не делает, консоль все равно показывает. https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certutil

Поиск здесь не находит ничего полезного.

Пример кода: сохраните его как файл «.jsx» и запустите его из набора инструментов Extendscript, ориентированного на Bridge (CC 2018 или CC 2019.) Он сохранит файл png в той же папке, что и скрипт.


if(BridgeTalk.appName == 'bridge'){
    try{
        var scriptf = File($.fileName); //script name
        var scriptfo = scriptf.parent; //parent folder of script
        var inFile = scriptfo.fsName + '/icon.txt';
        var outFile = scriptfo.fsName + '/icon.png';
        var icon = '''iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOCAYAAAAWo42rAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTktMDMtMTNUMTg6NTM6NDEtMDQ6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAzLTEzVDIwOjEyOjAyLTA0OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTAzLTEzVDIwOjEyOjAyLTA0OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNGM0YjdhLWJiZGQtNGVjOC1hYTRjLTIzMGIyNzE0YmI4NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M2YxOWE4Zi01MDYxLTRhZTYtODU3Yi0wNDI3YTY0ZTk3ZTUiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4M2YxOWE4Zi01MDYxLTRhZTYtODU3Yi0wNDI3YTY0ZTk3ZTUiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzZjE5YThmLTUwNjEtNGFlNi04NTdiLTA0MjdhNjRlOTdlNSIgc3RFdnQ6d2hlbj0iMjAxOS0wMy0xM1QxODo1Mzo0MS0wNDowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjZiYWRhYzgxLWU0ZTctNDViOC1hMDRkLWYxMDRjMmFiOTljZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMy0xM1QyMDoxMDo0NS0wNDowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNGM0YjdhLWJiZGQtNGVjOC1hYTRjLTIzMGIyNzE0YmI4NyIgc3RFdnQ6d2hlbj0iMjAxOS0wMy0xM1QyMDoxMjowMi0wNDowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AQeTEwAAAVJJREFUKJG1zDsvQ2EAxvH/e85pe9qmnEt7Lq26xS1REZtPwGIRkSYmH8BisZNIzBKfQWK2GFnEZDRQlxRxQiUaUuWcvgYVg6WLZ3mWX/5CSkknUzpS/wLFQWkCGUrkR5Po8rz0XiguvJnm+NTVxbY+NHZs9Q1GmBk0hABF6Y/q9a0Iypm7Kr13VdKwmK4978u+wRUBN4oQIh7Vgt3wKSgnARPIAXnAvb2eS9WCfamqaU0ED7OfQTCdaiMbcAE9oYPnkmo2SgI5r90LZbUH6AKygAfoug75PHg+WCaxrLOmxWKJoglYP6VkEnwf/DzksmAYqMMjnjKgip0/Jd8Hx/mGrgON1yMlXejdy1h2IwG/yG0j2wY7h6hUNhVVT97TbSy3RkYf8TwwDTCM9luvqLEl4olTTYYhtFp7zULxJJqc2NBtZ0Y1DYjCQ/FSX0eLnwF8AY6rXfuh6xyTAAAAAElFTkSuQmCC''';
        var F = new File(scriptfo + '/icon.txt');

        F.open('w');
        F.write(icon);
        F.close();

        if(Folder.fs == 'Windows'){
            var command = 'certutil -decode "' + inFile + '" "' + outFile + '"';
            }
        else{ //Mac
            var command = 'openssl base64 -d -A -in "' + inFile + '" -out "' +  outFile + '"';
            }
        app.system(command);
        File(scriptfo + '/icon.txt').remove();
        }
    catch(e){
        Window.alert(e + ' ' + e.line);
        }
    }
...