Скрипт InBackup

  • Автор темы Автор темы efodin
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
В смысле - одна?
Вот копии при "var numBackups = 5" и "var fmtBackups = 'n' ":
Мда, тем более странно, по сути оба метода отличаются только разной генерацией имен, я и говорю - колдунство чистой воды, рационально не объясняемое, баг локализации.
 
С публикацией что-то не так. Попробуйте "полечить" приложенным скриптом. Лучше копию публикации. На всякий случай. Это реинкарнация InHealing.
 

Вложения

В скрипте, кстати, разработчик указан. Сообщений о его исчезновении/недоступности и т. п. на форуме не было. Личку никто не отменял.

Дык, Виталий... Всё от скромности - тревожить не хотим по пустякам, а не потому, что Вас не найти. :)

С публикацией что-то не так. Попробуйте "полечить" приложенным скриптом. Лучше копию публикации. На всякий случай. Это реинкарнация InHealing.

Так я ж не на одной этой публикации проверял. Но полечил на всякий случай публикацию скриптом MasDelgado.jsx - ничего не изменилось. Как только переключаюсь на "var fmtBackups = 'n' ", сразу проблема вылезает, возвращаю на "d" - всё отлично. Скорее всего, действительно что-то с локализацией 7.5 рус.
 
Ан нет, сейчас внимательнее глянул код - а ведь разница между "n" и "d" есть и весьма серьезнее, чем простое наименование файлов. При "d", да, действительно, просто имя файла генерируется и все, а вот при "n" гораздо хуже - скрипт, по сути, два раза подряд открывает файл копии, похоже этот процесс и срывает крышу у индизайна. Виталий, вы точно уверены, что это правильно и нет никакой ошибки?
 
_MBK_, в скрипте не открываются файлы копий, в скрипте запрашиваются объекты типа File, а это не открытие, это только возможность получить доступ к свойствам объекта.
Посмотри внимательно, публикации никакие не открываются. Происходит генерация имени и публикация, открытая уже публикация, копируется по указанному пути с именем, которое было сформировано.
 
Скорее всего, действительно что-то с локализацией 7.5 рус.
С русской локализацией от адоб может быть всё что угодно.
Проверил на англоязычном CC, на относительно большом файле — работает.
Кстати, случаем бэкап не на сетевой диск делается?
 
Посмотри внимательно, публикации никакие не открываются.
Да это понятно, конечно, просто я смотрю разницу между вариантами "d" (который работает) и "n" (который у Леонида не работает) Так вот, в случае "d" функция generateName возвращает простое имя файла (myName = fldBackup + '/' + myPrefix + fileName + mySuffix;) а в случае "n" - объект типа File:
myName = new File(fldBackup + '/' + fileName + sepSuffix + num + '.indd');
Не совсем пойму почему так, но возможная причина, думаю, именно здесь.
Может, все таки, попробовать поменять
Код:
if (usePrefix) {
                        var myName = new File(fldBackup + '/' + num + sepPrefix + fileName + '.indd');
                    } else {
                        var myName = new File(fldBackup + '/' + fileName + sepSuffix + num  + '.indd');
                    }
на
Код:
if (usePrefix) {
                        var myName = fldBackup + '/' + num + sepPrefix + fileName + '.indd';
                    } else {
                        var myName = fldBackup + '/' + fileName + sepSuffix + num  + '.indd';
                    }
 
А так как в предыдущем сообщении менять пробовали?
 
А если поставить var numBackups = null; или var fmtBackups = ''; ?
 
Я зато увидел, что при дате в названии количество архивов не срабатывает. Но сейчас лень делать, два часа ночи у меня.
 
Я, между прочим, об этом говорил еще в #18 ;)
 
А если поставить var numBackups = null; или var fmtBackups = ''; ?

C «var numBackups = null;» (при «var fmtBackups = 'n';») всё заработало! Программа вылетать перестала, бэкапы нумеруются как Primer-00001.indd, Primer-00002.indd и т. п. Но, конечно, их число теперь не ограничивается, то есть, по сути, это мало чем отличается от варианта с 'd'.

С «var fmtBackups = '';» (как при «var numBackups = null», так и при «var numBackups = 5») сохранение по Ctrl+S работает, но бэкапы не создаются.
 
Уже чтото.
Тогда следующий вариант постукивания по шине: после строки var myDocName = getFileNameOnly(myDoc.name); продублируйте строку myDoc.save();
В этом случае вариант var fmtBackups = 'n' с нужным количеством копий работает нормально?
 
после строки var myDocName = getFileNameOnly(myDoc.name); продублируйте строку myDoc.save();
В этом случае вариант var fmtBackups = 'n' с нужным количеством копий работает нормально?

Нет, всё то же, что и раньше: вылетает...
 
Вылетает где - при выполнении скрипта на этом месте или точно так же оставляет не сохраненный файл, который при попытке сохранения валит индизайн?
 
Вылетает где - при выполнении скрипта на этом месте или точно так же оставляет не сохраненный файл, который при попытке сохранения валит индизайн?

2-й вариант: оставляет несохранённый, при закрытии крестиком предлагает сохранить, при нажатии на "Да" валит индизайн.
При выполнении скрипта бэкапы создаются, тут всё нормально.
 
Тогда следующая догадка: возможно подобный эффект в вашей локализованной версии дает внедрение в файл метки "cntBackup"
Чтобы убедиться в этом закомментируйте (поставьте в начале строки //) следующие строки:
app.activeDocument.insertLabel('cntBackup', '1'); и
app.activeDocument.insertLabel('cntBackup', (Math.round(num) + 1).toString());
 
Тогда следующая догадка: возможно подобный эффект в вашей локализованной версии дает внедрение в файл метки "cntBackup"
Чтобы убедиться в этом закомментируйте (поставьте в начале строки //) следующие строки:
app.activeDocument.insertLabel('cntBackup', '1'); и
app.activeDocument.insertLabel('cntBackup', (Math.round(num) + 1).toString());

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

К сожалению, сейчас должен бежать, вернусь к экспериментам только к вечеру.

_MBK_, огромное спасибо за помощь и участие!
 
Статус
Закрыто для дальнейших ответов.