Update required to this script

Hi,
This is a script to relink images by changing the names of the files in a folder etc.
I am using Indesign CS4 and I would appreciate a update of this script to CS4 (previously worked in CS3) it still works in CS4 but not 100%.
Could you also incorparate one little thing?
I have a page with multiple link on it. Everytime it updates the links, it asks me to approve every single link updated. I would like the script to have a feature "update all" without having to click "yes" (for approve) a million time when I know the links are all good.
Here is a copy of the script. ( I notice some is in what seems to be Russian, mainly the top half of the script is in Russian)
Change Links
version 3.5
Relink the images of the document to files with identical names in choosen folder.
An InDesign CS2-CS3 JavaScript
OS: Mac OS X, Windows XP
You use this script at your own fear and risk.
© 2009 Dmitriy Lapayev ([email protected])
The script is intended to replace the images of the document on files with identical names
from selected folder.
Main tasks:
1) Replace the missing files of the non-standard "Package Publication",
including interconnection transfers projects like: "Windows" to "MAC OS X" or from "MAC OS X" to "Windows";
2) The substitution of the preliminary document images on the processed files
with unchanged proportions of the height and width
(without the “Crop Image” and changes “Canvas Size”).
In parentheses elements of the dialog indicates the number of found objects of this type.
When launched, need select a folder, which contains the files that are intended to replace in the document.
Realized:
• choice of language when you first start: Russian or English
(full support of the Russian language is available only for OS Windows)
• extraction of embedded image files of the document;
• check the attribute «nonprinting»;
• search for types of document images;
• search for files extensions in the selected folder;
• Unlock Position for groups and objects to the replacement of files;
• save the settings and selected folder path in the ini-file
(created when you first run the script).
Relink images:
1) stored the geometric coordinates of images (Geometric Bounds), if not choosed
settings: Center Content, Scale 100% or Angles 0 °;
preservation of Geometric Bounds (top left and bottom right points) of the original image
is intended to replace the links to images with unchanged proportions of the height and width
(without «crop» - Crop Image and resizing - Canvas Size);
2) ignored:
• files with duplicate names (with the extension) -
when you change the type of files «identical», without an extension -
with the replacement for the selected type, complete with different full file names;
• outside pages images (PB);
• images posted from the clipboard (without link).
Скрипт предназначен для замещения связанных файлов документа
на файлы с аналогичными именами в выбранной папке.
Базовые задачи:
1) восстановление потерянных связей с файлами
нестандартных «сборок проектов» (Package Publication) при переносе, включая межсистемный;
2) замещение предварительных изображений в документе на обработанные.
В круглых скобках элементов диалога настроек скрипта указывается количество найденных
объектов данного типа.
При запуске скрипта выбирается папка, которая содержит файлы, предназначенные
для замещения в документе.
Настройки скрипта:
1) выбор изображений документа по состоянию связи с файлом;
2) диапазон страниц замещения изображений, задается именами страниц и секциями документа
(выбор секции обладает большим приоритетом);
3) «Режим пошаговой замены» - Step Mode:
• установка Center Content - размещать изображение по центру фрейма (контейнера);
• установка Scale 100% - вертикальному и горизонтальному масштабированию изображения
присваивается значение 100%;
• установка Angles 0° – углам вращения и горизонтального сдвига присваивается значение 0°;
• установка Check Rotate 90° - проверка вращение изображения (±90°),
при обнаружении несоответствия отношения вертикального и горизонтального масштабов
исходного и обработанного изображений;
• установка Clipping Path to None – отключать «обтравочный» путь;
• установка Check Transparency - проверка параметров прозрачности изображений и фреймов
(Blending Settings: Opacity < 100%, Blending Mode - не «Normal»);
4) Including Non-printing Objects - включая объекты с атрибутом «не печатать»
при замещении связей с файлами;
5) «Choice of File Extensions:» - выбор типов связанных файлов документа
для замены в заданном диапазоне страниц;
6) «File Names:» - установки для сопоставления имен исходных и найденных в выбранной папке файлов,
если имена файлов не совпадают («неидентичные» - «Non-identical»):
• «The End of File Name:» - выбор окончания имени файла, содержащего более одного символа «точка»;
• «Choice of File Extensions:» - выбор расширения файлов в указанной папке;
7) «Show Relink Report» - формирование и отображение отчета замещения связей с файлами.
Реализовано:
• выбор языка интерфейса скрипта при первом запуске: русский или английский
(полная поддержка русского языка доступна только на ОС «Windows»)
• извлечение внедренных файлов изображений документа;
• проверка атрибута «не печатать»;
• поиск типов связанных файлов документа;
• поиск расширений файлов в выбранной папке;
• Unlock Position для групп и объектов при замещении файлов;
• сохранение настроек и пути к выбранной папке в файле инициализации
(создается при первом запуске скрипта).
При замещении изображений:
1) сохраняются геометрические координаты изображений – Geometric Bounds, если не установлено
в настройках: Center Content, Scale 100% или Angles 0°;
сохранение Geometric Bounds (верхняя левая и нижняя правая точки) исходного изображения
предназначено для замещения на связи с файлами при неизменных пропорциях высоты
и ширины изображений, т.е. без «кадрирования» - Crop Image и изменения размера - Canvas Size;
2) игнорируются:
• файлы с дублирующимися именами с расширением - при замене на тип файлов «идентичный»,
без расширения - при замене на выбранный тип, при отличающихся полных именах файлов;
• изображения, находящиеся вне страниц документа (PB);
• изображения, помещенные из буфера обмена (отсутствует связь с файлом).
© 2009 Дмитрий Лапаев ([email protected])
with (app) {
const myScrVer = "3.5";
const myScrName = "Change Links";
// максимальная величина допуска отношений горизонтального и вертикального масштабов изображений
const myVGScDop = 0.01;
// copyright
var mn = "\u00A9\ \u0044\u006D\u0069\u0074\u0072\u0069\u0079\ \u004C\u0061\u0070\u0061\u0079\u0065\u0076";
// User Interaction Level
scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
// создание файла инициализации
const IniFName = "ChLinks_ini.txt";
var MyStrIniF = "";
var lgclIniF = new File (activeScript.path + "/" + IniFName);
if (!lgclIniF.exists) {
  // Выбор языка интерфейса
  var s_Locale = "";
  var myLanguageSelectDialog = dialogs.add({name: "Select Language (" + $.locale + ")", canCancel: false})
  with (myLanguageSelectDialog.dialogColumns.add().borderPanels.add()) {
   var languagesNames = new Array ("Русский", "English");
   var languagesSelect = dropdowns.add({stringList:languagesNames, selectedIndex: 0, minWidth: 160});
  myLanguageSelectDialog.show();
  switch (languagesSelect.selectedIndex) {
   case 0: s_Locale = "ru"; break;
   case 1: s_Locale = "ua"; break;
   case 2: s_Locale = "en"; break;
  myLanguageSelectDialog.destroy();
  MyStrIniF += "var inScriptName = \"" + myScrName + " " + myScrVer + "\";\n";
  MyStrIniF += "var inpVLinkStM = 0;\n";
  MyStrIniF += "var inpDefPath = \"\";\n";
  MyStrIniF += "var inStepMode = true;\n";
  MyStrIniF += "var inShowReport = true;\n";
  MyStrIniF += "var inClippPathNone = false;\n";
  MyStrIniF += "var inCenterCont = false;\n";
  MyStrIniF += "var inScale100 = false;\n";
  MyStrIniF += "var inAngles0 = false;\n";
  MyStrIniF += "var inCheckRotImage = false;\n";
  MyStrIniF += "var inpOrdDotN = true;\n";
  MyStrIniF += "var inpNotIdcl = true;\n";
  MyStrIniF += "var inpInSec = false;\n";
  MyStrIniF += "var inCheckTransp = false;\n";
  MyStrIniF += "var inNonprintIm = true;\n";
  MyStrIniF += "var sel_Language = \"" + s_Locale + "\";\n";
  MyStrIniF += "const mn = \"" + mn + "\";";
  lgclIniF.open("w");
  if (lgclIniF.write(MyStrIniF)) {
   alert (IniFName + " successfully created!\n(Default Script Options)", myScrName + " " + myScrVer, false);
   lgclIniF.close();
   eval ("//@include \'" + IniFName + "\';");
  else {alert("Unable to write the ini-file!"); exit();}
else {eval ("//@include \'" + IniFName + "\';"); cr();}
// тип файловой системы (ОС)
var WonFS = File.fs;
if (WonFS == "Macintosh") {WonFS = "Mac OS X";}
// язык интерфейса
$.localize = true;
$.locale = sel_Language;
const copyRight = localize ({ru: "\u00A9\ Дмитрий Лапаев", en: mn});
const local_Folder = localize ({ru: "Папка: ", en: "Folder: "});
const local_inFolder = localize ({ru: "папке: ", en: "a Folder: "});
const local_In = localize ({ru: " в ", en: " in "});
const local_To = localize ({ru: " на ", en: " to "});
const local_FNames = localize ({ru: "имена файлов", en: "names"});
const local_Report = localize ({ru: "Отчет замещения файлов", en: "Relink Report"});
const local_Relink = localize ({ru: "Заменить", en: "Relink"});
const local_Found= localize ({ru: "Найдено", en: "Found"});
const local_inSections = localize ({ru: "cекциях", en: "sections"});
const local_Total = localize ({ru: "Всего: ", en: "Total: "});
const local_Links= localize ({ru: "связей с файлами", en: "Links"});
const local_Files = localize ({ru: "-файлы", en: "-files"});
const local_LinkStatus = localize ({ru: "состояние связей -", en: "link status -"});
const local_OfSectionsN = localize ({ru: " cекции №", en: " of section #"});
const local_OfDocument = localize ({ru: " документа", en: " of document"});
const local_Conditions = localize ({ru: "Условия замещения:", en: "Conditions:"});
const local_ApplyChanges = localize ({ru: "Сохранить изменения?", en: "Apply Changes?"});
const local_ContinueRelink = localize ({ru: "Продолжить замещение файлов?", en: "Continue Relink Files?"});
const local_RepInf_1 = localize ({ru: "успешно заменено", en: "Successfully relink"});
const local_RepInf_2 = localize ({ru: "отсутствуют в папке", en: "Links to not existing files"});
const local_RepInf_3 = localize ({ru: "игнорировано из-за дубликата имени", en: "Ignored links with duplicates of names"});
const local_RepInf_4 = localize ({ru: "отменено пользователем", en: "Canceled by user"});
const local_RepInf_5 = localize ({ru: "объекты \"не для печати\"", en: "Оbjects with attribute \"Nonprinting\""});
// надписи диалогов
const RotateLabel = localize ({ru: "Вращать", en: "Rotate"});
const ChoiceFileFormatsLabel = localize ({ru: "Выбор форматов файлов:", en: "Choice of File Formats:"});
const FileNameLabel = localize ({ru: "Имена файлов:", en: "File Names:"});
const PageRangeLabel = localize ({ru: "Диапазон страниц:", en: "Range of Pages:"});
const EndPageNameLabel = localize ({ru: "Окончание имени:", en: "The End of File Name:"});
const ChoiceExtLabel = localize ({ru: "Выбор типа файлов:", en: "Choice of File Extensions:"});
var nameNCE =  "identical";
if (WonFS == "Windows") {nameNCE =  localize ({ru: "идентичные", en: nameNCE});}
var nameNon =  "Non-";
if (WonFS == "Windows") {nameNon =  localize ({ru: "не", en: nameNon});}
var selShowPeport = "Show Relink Report";
if (WonFS == "Windows") {selShowPeport = localize ({ru: "Отобразить отчет", en: selShowPeport});}
var selSections = "Sections:";
if (WonFS == "Windows") {selSections = localize ({ru: "Cекции документа:", en: selSections});}
var selFDot = "First Dot";
if (WonFS == "Windows") {selFDot = localize ({ru: "первая точка", en: selFDot});}
var selLastDot = "Last Dot";
if (WonFS == "Windows") {selLastDot = localize ({ru: "последняя точка", en: selLastDot});}
var selStepMode = "Step Mode";
if (WonFS == "Windows") {selStepMode = localize ({ru: "Режим пошаговой замены", en: selStepMode});}
var selFitCenter = "Center Content";
if (WonFS == "Windows") {selFitCenter = localize ({ru: "по центру фрейма", en: selFitCenter});}
var selVHScale100 = "Scale 100%";
if (WonFS == "Windows") {selVHScale100 = localize ({ru: "масштаб 100%", en: selVHScale100});}
var selAngles0 = "Angles 0°";
if (WonFS == "Windows") {selAngles0 = localize ({ru: "углы 0°", en: selAngles0});}
var selСhRotate90 = "Check Rotate 90°";
if (WonFS == "Windows") {selСhRotate90 = localize ({ru: "проверять вращение на 90°", en: selСhRotate90});}
var selClippingPathNone = "Clipping Path to None";
if (WonFS == "Windows") {selClippingPathNone = localize ({ru: "отключать обтравочный путь", en: selClippingPathNone});}
var selChTransparency = "Check Transparency";
if (WonFS == "Windows") {selChTransparency = localize ({ru: "проверять прозрачность", en: selChTransparency});}
var selNonprintingImages = "Including Non-printing Objects";
if (WonFS == "Windows") {selNonprintingImages = localize ({ru: "Включая объекты не для печати", en: selNonprintingImages});}
var selRotate90CW = "90° CW";
if (WonFS == "Windows") {selRotate90CW = localize ({ru: "90° по часовой стрелке", en: selRotate90CW});}
var selRotate90CCW = "90° CCW";
if (WonFS == "Windows") {selRotate90CCW = localize ({ru: "90° против", en: selRotate90CCW});}
// массив выбора состояний связей
var inpVLinkStArr = new Array();
if (WonFS == "Windows") {
  inpVLinkStArr = [[localize ({ru: "отсутствующие", en: "Missing"}), false], [localize ({ru: "нормальные", en: "Normal"}), false], [localize ({ru: "модифицированные", en: "Modified"}), false], [localize ({ru: "все связи", en: "All Links"}), false]];
else {
  inpVLinkStArr = [["Missing", false], ["Normal", false], ["Modified", false], ["All Links", false]];
inpVLinkStArr[inpVLinkStM][1] = true;
// сообщения скрипта
var alertWithoutLink = localize ({ru: "Объект без связи с файлом!\n(импортирован из буфера обмена)\nПродолжить работу?", en: "Object without link!\n(imported from clipboard)\nContinue?"});
var alertAfterRotateSAngle = localize ({ru: "Угол горизонтального сдвига изображения равен", en: "The skewing angle applied to the Image is"});
var alertAfterRotateSA0 = localize ({ru: "После поворота изображения это значение будет некорректным!\nУстановить 0°?", en: "After rotate this value is incorrect!\nSet Shear Angle to 0°?"});
var alertNonprinting = localize ({ru: "Найден объект:", en: "Non-printing Object:"});
var alertNonprintToOff = localize ({ru: "Отключить атрибут \"не для печати\"?", en: "Set attribute \"Nonprinting\" to Off?"});
var alertEmbedded = localize ({ru: "внедренных изображений", en: "embedded files"});
var alertUnembed = localize ({ru: "Сохранить внедренные изображения?", en: "Unembed this files?"});
var alertAlreadyExist = localize ({ru: "уже существует в указанной папке.\nПерезаписать этот файл?", en: "already exist in the folder.\nDo you want to overwrite the file with the embedded data?"});
var alertСreateNewFolder = localize ({ru: "Выберите папку для сохранения файлов", en: "Select the Folder where files will be created"});
var alertNotMatchLinks = localize ({ru: "Не найдено соответствующих связей с файлами!", en: "No matching Links!"});
var alertlEmptyFolder = localize ({ru: "пустая\nили содержит недопустимые символы в имени!\n(только для Mac OS X)", en: "is empty\nor contains illegal characters in its name!\n(Mac OS X)"});
var alertNotFoundImages = localize ({ru: "Не найдено файлов в папке:", en: "Сannot Find Files in a Folder:"});
var selFolderWithImages = localize ({ru: "Выберите папку с файлами для замещения в документе", en: "Select a Folder with files for Relink"});
var andTryAgain =  localize ({ru: "и выполните скрипт повторно.", en: "and try again."});
var noSaveDocumentAlert =  localize ({ru: "Пожалуйста сохраните документ ", en: "Please Save "});
var noLinks = localize ({ru: "В открытом документе нет связанных файлов!", en: "No Links in Document!"});
var noOpenDocsAlert = localize ({ru: "Отсутствуют открытые документы!\nПожалуйста откройте документ", en: "No Documents are Open!\nPlease Open a Document"}) + " " + andTryAgain;
$.locale = null;
// проверка открытых документов
if (documents.length == 0) {alert (noOpenDocsAlert, inScriptName, false); exit();}
var myDoc = activeDocument;
try {activeDocument.filePath}
catch (error) {alert (noSaveDocumentAlert + myDoc.name + " " + andTryAgain, inScriptName, false); exit();}
if (myDoc.links.length == 0) {alert (noLinks, inScriptName, false); exit();}
// версия InDesign
try {const InDver = version.substr (0, 5);}
catch (error) {alert (inScriptName + "\nis not compatible with this version of InDesign!", "", true); exit();}
// количество страниц в документе
var myDocPgsLength = myDoc.pages.length;
// выбор папки с изображениями
var myNIdir = Folder.selectDialog (selFolderWithImages, inpDefPath);
if (myNIdir != null) {var MyNewDir = myNIdir; }
else {exit();}
// определяем расширения файлов выбранной папки, исключаем системные
var MyFiles = MyNewDir.getFiles("*");
if (MyFiles.length == 0) {
  alert(local_Folder + "\'" + Folder.decode(MyNewDir.name) + "\' " + alertlEmptyFolder, inScriptName, false);
  exit();
// типы расширений файлов в выбранной папки
var NewImagesExtType = new Array();
NewImagesExtType =  ExtenSysCheck (MyFiles);
if (NewImagesExtType.length == 0) {
  alert (alertNotFoundImages + " \'" + Folder.decode(MyNewDir.name) + "\'!", inScriptName, false);
  exit();
// заполняем массив типов изображений документа
var DocSelType = new Array();
var TypeFileMyDoc = GetFileTypeInDoc (myDoc);
for (var objCounter = 0; objCounter < TypeFileMyDoc.length; objCounter++) {
  DocSelType.push ([true, TypeFileMyDoc[objCounter][0]]);
// считаем связи с файлами по состояниям
var myLinksCounters = myDocLinksCounters(myDoc);
var ArrStatusL = new Array();
for (objCounter = 0; objCounter < 4; objCounter++) {
  ArrStatusL.push("(" + myLinksCounters[objCounter] + ") ");
// имена первой и последней страниц документа
var DocNumberPageStart = myDoc.pages[0].name;
var DocNumberPageEnd = myDoc.pages[myDocPgsLength-1].name;
// массив параметров секций
var ASecPar = SecRangeOfPages (myDoc);
// Диалог
var myDialog = dialogs.add({name: inScriptName + " (InDesign " + InDver + " on " + WonFS + ")  " + copyRight});
var myCheckArray = new Array();
with (myDialog.dialogColumns.add().dialogRows.add()) { 
  with (borderPanels.add().dialogColumns.add()) {
   // панель выбора изображений документа по типу состояния связи с файлом
   with (dialogRows.add()) {
    staticTexts.add({staticLabel: local_Relink + ":"});
    var myDocLinksSatus = radiobuttonGroups.add();
    for (var StC = 0; StC < inpVLinkStArr.length; StC++) {
     myDocLinksSatus.radiobuttonControls.add({staticLabel: ArrStatusL[StC] + inpVLinkStArr[StC][0], checkedState: inpVLinkStArr[StC][1]});
   // панель выбора диапазона страниц
   with (borderPanels.add().dialogColumns.add()) {
    dialogRows.add().staticTexts.add({staticLabel: PageRangeLabel});
    // задаем имена первой и последней страниц документа
    with(dialogRows.add()) {
     var PageRangeStart = dialogColumns.add().textEditboxes.add({editContents:DocNumberPageStart, minWidth: 90});
     var PageRangeEnd = dialogColumns.add().textEditboxes.add({editContents:DocNumberPageEnd, minWidth: 90});
    var myReportTotalPages  = local_Total + myDocPgsLength;
    if (ASecPar.length > 1) {myReportTotalPages += local_In + ASecPar.length + " " + local_inSections;}
    dialogRows.add().staticTexts.add({staticLabel: myReportTotalPages});
    // секции документа
    var SecNSelect = 0;
    if (ASecPar.length > 1) {
     var MySelNumbSection = dialogRows.add().enablingGroups.add({staticLabel: selSections, checkedState: inpInSec});
     var SecNList = new Array();
     var nSecPx = "";
     var mySecRange;
     with (MySelNumbSection) {
      for (objCounter = 0; objCounter < ASecPar.length ; objCounter++) {
       if (ASecPar[objCounter][1]  == true) {nSecPx = ASecPar[objCounter][2];}
       else {nSecPx = "";}
       mySecRange = nSecPx + ASecPar[objCounter][3] + "-" + nSecPx + (ASecPar[objCounter][3]+ASecPar[objCounter][4]-1);
       SecNList.push((objCounter+1) + "\| " + mySecRange);
      SecNSelect = dropdowns.add({stringList: SecNList, selectedIndex: 0, minWidth: 165});
   // пошаговый режим
   var MyStepByStepMode = dialogRows.add().enablingGroups.add({staticLabel: selStepMode, checkedState: inStepMode});
   with (MyStepByStepMode.dialogColumns.add()) {
    var myCenterContent = checkboxControls.add({staticLabel: selFitCenter, checkedState: inCenterCont, minWidth: 191});
    with (dialogRows.add()) {
     var myScale100 = checkboxControls.add({staticLabel: selVHScale100, checkedState: inScale100});
     var myAngles0 = checkboxControls.add({staticLabel: selAngles0, checkedState: inAngles0});
    var myPossRotateIm = checkboxControls.add({staticLabel: selСhRotate90, checkedState: inCheckRotImage});
    var myClippPathNone = checkboxControls.add({staticLabel: selClippingPathNone, checkedState: inClippPathNone});
    var myChTransparency = checkboxControls.add({staticLabel: selChTransparency, checkedState: inCheckTransp});
   var myNonprintImagesRelink = checkboxControls.add({staticLabel: selNonprintingImages, checkedState: inNonprintIm});
  // панель выбора типов файлов документа для замены
  with (borderPanels.add().dialogColumns.add()) {
   with(borderPanels.add().dialogColumns.add()) {
    dialogRows.add().staticTexts.add({staticLabel: ChoiceFileFormatsLabel});
    for (objCounter = 0; objCounter < TypeFileMyDoc.length; objCounter++)
    myCheckArray[objCounter] = checkboxControls.add ({staticLabel: Str_inskbk(TypeFileMyDoc[objCounter][0]) + " (" + TypeFileMyDoc[objCounter][1] + ")", checkedState: true, minWidth: 180});
   dialogRows.add().staticTexts.add({staticLabel: FileNameLabel});
   var MyTypeNFname = dialogRows.add().enablingGroups.add({staticLabel: nameNon + nameNCE, checkedState: inpNotIdcl});
   with (MyTypeNFname.dialogColumns.add()) {
    // панель выбора окончания имени файла (для имен связанных файлов с несколькими точками в имени)
    with(borderPanels.add().dialogColumns.add()) {
     dialogRows.add().staticTexts.add({staticLabel: EndPageNameLabel});
     var myDotFLord = dialogRows.add().radiobuttonGroups.add();
     myDotFLord.radiobuttonControls.add({staticLabel: selFDot, checkedState: inpOrdDotN, minWidth: 155});
     myDotFLord.radiobuttonControls.add({staticLabel: selLastDot, checkedState: !inpOrdDotN});
    // панель выбора расширений файлов, найденных в папке
    with(borderPanels.add().dialogColumns.add()) {
     dialogRows.add().staticTexts.add({staticLabel: ChoiceExtLabel});
     var MyTypesForChange = new Array();
     for (objCounter = 0; objCounter < NewImagesExtType.length; objCounter++)
     MyTypesForChange.push("." + NewImagesExtType[objCounter]);
     var myNewImagesExtSelect = dropdowns.add({stringList:MyTypesForChange, selectedIndex: 0, minWidth: 155});
     dialogRows.add().staticTexts.add({staticLabel: local_Found + local_In + local_inFolder + NewImagesExtType.length}); 
   var myShowReportRelink = checkboxControls.add({staticLabel: selShowPeport, checkedState: inShowReport});
// отображаем диалог
var myResult = myDialog.show();
if (!myResult) {myDialog.destroy(); exit();}
// переменные выбранных установок
var myIndexButLinksSt = myDocLinksSatus.selectedButton;
var myButFirstDotName = false;
if (myDotFLord.selectedButton == 0) {myButFirstDotName = true;}
var selSectPR = inpInSec;
try {selSectPR = MySelNumbSection.checkedState;}
catch (e){}
var selChTransp = myChTransparency.checkedState;
var selScale_100 = myScale100.checkedState;
var selAngles_0 = myAngles0.checkedState;
var selCenterCont = myCenterContent.checkedState;
var selChRotate = myPossRotateIm.checkedState;
var selClipPathNone = myClippPathNone.checkedState;
var selStepMode = MyStepByStepMode.checkedState;
var MyNDirAbsURI = MyNewDir.absoluteURI;
// записываем выбранные установки в файл инициализации
MyStrIniF = "var inScriptName = \"" + myScrName + " " + myScrVer + "\";\n";
MyStrIniF += "var inpVLinkStM = " + myIndexButLinksSt + ";\n";
// MyStrIniF += "var inpDefPath = \"" + MyNDirAbsURI.substr(0, MyNDirAbsURI.lastIndexOf("/")) + "\";\n";
MyStrIniF += "var inpDefPath = \"" + MyNDirAbsURI + "\";\n";
MyStrIniF += "var inStepMode = " + selStepMode + ";\n";
MyStrIniF += "var inShowReport = " + myShowReportRelink.checkedState + ";\n";
MyStrIniF += "var inClippPathNone = " + selClipPathNone + ";\n";
MyStrIniF += "var inCenterCont = " + selCenterCont + ";\n";
MyStrIniF += "var inScale100 = " + selScale_100 + ";\n";
MyStrIniF += "var inAngles0 = " + selAngles_0 + ";\n";
MyStrIniF += "var inCheckRotImage = " + selChRotate + ";\n";
MyStrIniF += "var inpOrdDotN = " + myButFirstDotName + ";\n";
MyStrIniF += "var inpNotIdcl = " + MyTypeNFname.checkedState + ";\n";
MyStrIniF += "var inpInSec = " + selSectPR + ";\n";
MyStrIniF += "var inCheckTransp = " + selChTransp + ";\n";
MyStrIniF += "var inNonprintIm = " + myNonprintImagesRelink.checkedState + ";\n";
MyStrIniF += "var sel_Language = \"" + sel_Language + "\";\n";
MyStrIniF += "const mn = \"" + mn + "\";";
lgclIniF.open("w");
if (lgclIniF.write(MyStrIniF)) {lgclIniF.close();}
else {alert ("Error writing to the ini-file!", inScriptName, true);}
// переменные диапазона страниц для поиска изображений
var PRSedcont = PageRangeStart.editContents;
var PREedcont = PageRangeEnd.editContents;
var mySelSecStartAbs = 0;
var mySelSecEndsAbs = myDocPgsLength;
if (ASecPar.length > 1 && selSectPR == true) {
  SecNSelect = SecNSelect.selectedIndex;
  mySelSecStartAbs = ASecPar[SecNSelect][0];
  mySelSecEndsAbs = mySelSecStartAbs + ASecPar[SecNSelect][4];
// присваиваем выбранный тип для замещения
var mySelectedExt ;
var ResIndexSelectExt = myNewImagesExtSelect.selectedIndex ;
if (MyTypeNFname.checkedState == false) {mySelectedExt = nameNCE;}
else {mySelectedExt = NewImagesExtType[ResIndexSelectExt];}
var mySTdocStr = new Array();
// выбранные для замещения типы документа
for (objCounter = 0; objCounter < DocSelType.length; objCounter++) {
  DocSelType[objCounter][0] = myCheckArray[objCounter].checkedState;
  if (DocSelType[objCounter][0] == true) mySTdocStr.push(Str_inskbk(DocSelType[objCounter][1]));
// формируем массив изображений документа по установленным условиям
var MyGraphicsPages = new Array();
// выборка всех изображений из заданного диапазона страниц
MyGraphicsPages = RangePagesGraphics (myDoc, PRSedcont, PREedcont, selSectPR, mySelSecStartAbs, mySelSecEndsAbs);
PRSedcont = MyGraphicsPages[1]
PREedcont = MyGraphicsPages[2];
// массив имен файлов изображений с атрибутом "не печатать"
var myImagesWithANonpr = new Array();
// удаляем (при выборе в диалоге) изображения с атрибутом "не печатать"
MyGraphicsPages = myPrint_ObjArray (MyGraphicsPages[0], MyStepByStepMode.checkedState, myNonprintImagesRelink.checkedState, myImagesWithANonpr)
// выбираем по статусу состояния связи с файлом изображения
MyGraphicsPages = selMissNormModAll_Links (MyGraphicsPages, myIndexButLinksSt);
// выборка по обозначенным типам изображений
MyGraphicsPages = getTypeRastrImages (MyGraphicsPages, DocSelType);
// удаляем файлы с дублирующимися именами при разных путях
MyGraphicsPages =  FindDuplicatesNames (MyGraphicsPages, mySelectedExt, myButFirstDotName);
if (MyGraphicsPages.length == 0) {
  alert (alertNotMatchLinks, inScriptName, false);
  myDialog.destroy();
  exit();
// переподстановка выбранных файлов:
var beRotate = false;
var ResRelinkErr = SelectedFiles_Relink (MyGraphicsPages, MyNDirAbsURI, mySelectedExt);
// отчет
ResRelinkErr.push(myImagesWithANonpr);
if (myShowReportRelink.checkedState) {ReportErrorsRelink (ResRelinkErr, inpVLinkStArr[myIndexButLinksSt][0], PRSedcont, PREedcont, SecNSelect, selSectPR, mySTdocStr);}
myDialog.destroy();
exit();
/* ФУНКЦИИ•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• •••••••••••••••••••••••••••••••••••••••••••••••*/
/* Функция возвращает массив счетчиков изображений документа по состоянию связи с файлом.
Внедренные файлы предлагается извлечь в выбранную папку. */
function myDocLinksCounters (inDDoc) {
var aDocLinksL = inDDoc.links.length;
var ArrLinksCount = new Array(0, 0, 0, aDocLinksL);
var myEmbeddedLinks = new Array();
for (var linkCounter = 0; linkCounter < aDocLinksL; linkCounter++) {
  if (inDDoc.links[linkCounter].status == LinkStatus.linkMissing) ArrLinksCount[0]++;
  if (inDDoc.links[linkCounter].status == LinkStatus.normal) ArrLinksCount[1]++;
  if (inDDoc.links[linkCounter].status == LinkStatus.linkOutOfDate) ArrLinksCount[2]++;
  if (inDDoc.links[linkCounter].status == LinkStatus.linkEmbedded) myEmbeddedLinks.push(inDDoc.links[linkCounter]);
// для внедренных изображений
if (myEmbeddedLinks.length > 0) {
  if (confirm (local_Found + " " + alertEmbedded + ": " + myEmbeddedLinks.length + "\n" + alertUnembed, "", inScriptName)) {
   // выбор папки
   var myUnmDir = Folder.selectDialog (alertСreateNewFolder, inDDoc.filePath);
   if (myUnmDir != null) {
    var MyNewUnembedDir = myUnmDir.absoluteURI; 
    for (linkCounter = 0; linkCounter < myEmbeddedLinks.length; linkCounter++){
     // если файл с таким же именем существует
     if (File(MyNewUnembedDir + "/" + myEmbeddedLinks[linkCounter].name).exists) {
      if (confirm (myEmbeddedLinks[linkCounter].name + " " + alertAlreadyExist, "", inScriptName)) {
       myEmbeddedLinks[linkCounter].unembed(Folder(MyNewUnembedDir));
       ArrLinksCount[1]++;
     else {
      myEmbeddedLinks[linkCounter].unembed(Folder(MyNewUnembedDir));
      ArrLinksCount[1]++;
return ArrLinksCount;
/* Функция удаляет из массива myObjArray изображения с атрибутом "не печатать"
при myNonPrImSeld = false. При пошаговом режиме предлагается снять атрибут "не печатать"
с изображений массива myObjArray.
Формируется массив изображений с атрибутом "не печатать" myArrayNonprintingIm для отчета. */
function myPrint_ObjArray(myObjArray, myStepModeTrue, myNonPrImSeld, myArrayNonprintingIm) {
var myPrintObjArray= new Array();
var myObjPr;
for (var myCobj = 0; myCobj < myObjArray.length; myCobj++) {
  myObjPr = myObjArray[myCobj];
  if (myNonprint_ParentRe(myObjPr)) { 
   if(myStepModeTrue) {
    myObjPr.itemLink.show();
    if (confirm(alertNonprinting + " " + myObjPr.itemLink.name + "\n" + alertNonprintToOff)) {
     myNonpFalse_ParentRe (myObjPr);
     myPrintObjArray.push(myObjPr);
    else {
     myArrayNonprintingIm.push(myObjPr.itemLink.name);
   else {myArrayNonprintingIm.push(myObjPr.itemLink.name);}
   if (myNonPrImSeld == true) {myPrintObjArray.push(myObjPr);}
else myPrintObjArray.push(myObjPr);
return myPrintObjArray;
/* Функция возвращает массив изображений, выбранных
по состоянию связи c файлом из массива myImagesArray, */
function selMissNormModAll_Links(myImagesArray, LinksStatusIndex, atrNonPrint) {
if (LinksStatusIndex == 3) {return myImagesArray;}
var myStatusImages = new Array();
var myStatusLink;
for (var myCounter = 0; myCounter < myImagesArray.length; myCounter++) {
  myStatusLink = myImagesArray[myCounter].itemLink.status;
  // отсутствующие
  if (myStatusLink == LinkStatus.linkMissing && LinksStatusIndex == 0)
   {myStatusImages.push(myImagesArray[myCounter]);}
  // нормальные
  if (myStatusLink == LinkStatus.normal && LinksStatusIndex == 1)
   {myStatusImages.push(myImagesArray[myCounter]);}
  // модифицированные
  if (myStatusLink == LinkStatus.linkOutOfDate && LinksStatusIndex == 2)
   {myStatusImages.push(myImagesArray[myCounter]);}
return myStatusImages;
/* Функция замещения связей с файлами. Возвращает массив с результатами замещения. */
function SelectedFiles_Relink (MySeldGraphics, MyRFolder, myExten) {
var myLink;
var myNewLinkName = "";
var myFileName = "";
var myFileNameNoExt = "";
var myRelinkFileName = "";
var RelinkToFilesName = "";
var myBlendingSettings = "";
var myUpdLink;
var RelinkYes = true;
var ReportAlerts = new Array();
var mySeccessRelinks = new Array();
var DuplicatsCancelObj = new Array();
var NoFileExistErrorLinks = new Array();
var CancelByURelink = new Array();
var OldGeomBounds;
var myCountUndo;
var myImageRotAng;
var myImageShAngl;
var myPossAngleW;
var myNewFImage;
var myPrSc;
var myNewPrSc;
var myIsImagePar = new Array();
// считать координаты для разворота
app.activeDocument.viewPreferences.rulerOrigin = RulerOrigin.spreadOrigin;
// установка центральной точки (для поворота изображения)
app.activeWindow.transformReferencePoint = AnchorPoint.centerAnchor;
for (var i = 0; i < MySeldGraphics.length; i++) {
  myLink = MySeldGraphics[i][0].itemLink;
  myFileName = myLink.name;
  myFileNameNoExt = FileNameWtExt(myFileName, myButFirstDotName); 
  if (MySeldGraphics[i][1] == true) {   
   if (myExten == nameNCE) {myRelinkFileName = myFileName;}
   else {myRelinkFileName = myFileNameNoExt + "." + myExten;}
   // полное имя файла
   myNewLinkName = MyRFolder + "/" + myRelinkFileName;
   // переменная, описывающая операцию замещения файлов
   RelinkToFilesName = myFileName + local_To + myRelinkFileName;
   // если файл найден
   if (File (myNewLinkName).exists) {
    // запоминаем геометрические координаты предварительного изображения
    OldGeomBounds = MySeldGraphics[i][0].geometricBounds;
    // для пошагового режима
    if (selStepMode) {
     myLink.show();
     // blending settings
     if (selChTransp) {myBlendingSettings = OBJ_Effects(MySeldGraphics[i][0], InDver.substr(0,1));}
     RelinkYes = confirm (local_Relink + " " + RelinkToFilesName + "?\n\n" + myBlendingSettings);
     if (RelinkYes) {
      // запоминаем параметры предварительного изображения
      myIsImagePar = [MySeldGraphics[i][0].horizontalScale, MySeldGraphics[i][0].verticalScale, MySeldGraphics[i][0].shearAngle, MySeldGraphics[i][0].rotationAngle, OldGeomBounds];
      // отношение горизонтального и вертикального масштабов
      myPrSc = ScaleProp_HV(MySeldGraphics[i][0]);
    if (RelinkYes) {
     myLink.relink (File(myNewLinkName));
     myUpdLink = myLink.update();
     myNewFImage = myUpdLink.parent;
     myNewFImage.geometricBounds = OldGeomBounds;
     myCountUndo = 3;
     // для пошагового режима
     if (selStepMode == true) {
      // отключаем путь
      if (selClipPathNone == true) {
       if (myUpdLink.parent.clippingPath.clippingType != ClippingPathType.none) {
        myUpdLink.parent.clippingPath.clippingType = ClippingPathType.none;
        myCountUndo++;
      myUpdLink.show();
      // проверка вращения изображения на 90°
      if (selChRotate == true) {
       beRotate = false;
       // анализ вероятности поворота изображения (±90°)
       myNewPrSc = ScaleProp_HV(myNewFImage);
       if (Math.abs (myNewPrSc - myPrSc ) > myVGScDop) {
        // поворот изображения
        if (InDver.substr(0, 1) < 5) {myCountUndo = myRotateDialogCS2 (myNewFImage, myIsImagePar, myCountUndo);}
        else {myCountUndo = myRotateUIDialog (myNewFImage, myIsImagePar, myCountUndo);}
      // изображение - по центру фрейма
      if (selCenterCont) {
       myNewFImage.fit (FitOptions.centerContent);
       myCountUndo++;
      // углы - 0 градусов
      if (selAngles_0) {
       myCountUndo = image_ZeroAngle (myNewFImage, myCountUndo, beRotate);
      else {myCountUndo = anglesRounding (myNewFImage, myCountUndo);}
      // масштаб - 100 %
      if (selScale_100) {
       myCountUndo = image_VH_Scale_100 (myNewFImage, myCountUndo);
      else {myCountUndo = Scale_VH (myNewFImage, myPrSc, myCountUndo);}
      // применить изменения изображения
      if (confirm (local_ApplyChanges, "", inScriptName) == false) {
       myResUndo (myCountUndo);
       CancelByURelink.push(RelinkToFilesName);
       if (confirm (local_ContinueRelink, "", inScriptName) == false) break;
     else mySeccessRelinks.push(RelinkToFilesName);
    else mySeccessRelinks.push(RelinkToFilesName);
   else CancelByURelink.push(RelinkToFilesName);
  else NoFileExistErrorLinks.push(myRelinkFileName);
else {if (myExten != nameNCE) {DuplicatsCancelObj.push(myFileNameNoExt);} else {DuplicatsCancelObj.push(myFileName);}}
} // завершение цикла
ReportAlerts.push(mySeccessRelinks);
ReportAlerts.push(NoFileExistErrorLinks);
ReportAlerts.push(DuplicatsCancelObj);
ReportAlerts.push(CancelByURelink);
ReportAlerts.push(MySeldGraphics.length);
ReportAlerts.push(myExten);
ReportAlerts.push(MyRFolder);
return ReportAlerts;
/* Функция формирует отчет по замещению фйлов изображений документа. */
function ReportErrorsRelink (ArrErrorsLinks, myFoundSt, DnStPage, DnEndPage, DnNSec, SelSecY, TypeDocSel) {
// массив сообщений отчета замены связей
var StLabelsArr = new Array(local_RepInf_1, local_RepInf_2, local_RepInf_3, local_RepInf_4, local_RepInf_5);
var myReportRelnk = app.dialogs.add({name: local_Report, canCancel: false});
var myFragmD = myReportRelnk.dialogColumns.add().borderPanels.add().dialogColumns.add();
with (myFragmD) {
  var myEndRT;
  var myBegRT;
  if (ArrErrorsLinks[5]  == nameNCE) {myEndRT = local_To + ArrErrorsLinks[5] + " " + local_FNames;}
  else {myEndRT = local_To + ArrErrorsLinks[5] + local_Files;} 
  if (myFoundSt != inpVLinkStArr[3][0]) {myBegRT = "1) " + local_LinkStatus + " \"" + myFoundSt + "\"";}
  else {myBegRT = "1) " + myFoundSt;}
  // формируем отчет
  with (dialogRows.add()) {
   dialogColumns.add().staticTexts.add({staticLabel: local_Conditions});
   with (dialogColumns.add()) {
    dialogRows.add().staticTexts.add({staticLabel: myBegRT});
    dialogRows.add().staticTexts.add({staticLabel: "2) " + myStrSymbolsReplace(TypeDocSel, ",", ", ") + myEndRT});
  dialogRows.add().staticTexts.add({staticLabel: local_Found + " " + local_Links + ": " + ArrErrorsLinks[4]});
  for (var myBordersCount = 0; myBordersCount <  StLabelsArr.length; myBordersCount++)
  if (myBordersCount < 4) {
   BorderTextsDropdowns (myFragmD, StLabelsArr[myBordersCount], ArrErrorsLinks[myBordersCount], 230);
  else {
   var mySecSelInfo;
   if (SelSecY) {mySecSelInfo =  local_OfSectionsN + (DnNSec+1);}
   else {mySecSelInfo = local_OfDocument;}
   dialogRows.add().staticTexts.add({staticLabel: PageRangeLabel + " " + DnStPage + " - " + DnEndPage + mySecSelInfo});
   BorderTextsDropdowns (myFragmD, StLabelsArr[myBordersCount], ArrErrorsLinks[7], 230);
  dialogRows.add().staticTexts.add({staticLabel: local_Folder + Folder.decode (Folder(ArrErrorsLinks[6]).name)});
myReportRelnk.show();
myReportRelnk.destroy();
/* Функция формирует панель диалога с текстовой информацией
и "выпадающим списком" неповторяющихся объектов массива myArray. */
function BorderTextsDropdowns (myDialogArh, StrTextLabel, myArray, DdownsMinimW) {
if (myArray.length > 0) {
with (myDialogArh.borderPanels.add()) {
  staticTexts.add({staticLabel: StrTextLabel + ": " + myArray.length, minWidth: DdownsMinimW});
  try {dropdowns.add({stringList: myArray, selectedIndex: 0, minWidth: 320});}
  catch (e) {alert (e);}
/* Функция возвращает массив графических объектов заданного диапазона страниц  документа.*/
function RangePagesGraphics (mySegDoc, StartEC, EndgEC, SNSel, SecStart, SecEnd) {
var NPageStart = -1;
var CurrtPage;
var myGaphicsCounter;
var MyGraphicsP = new Array();
var MyGraphicsPFinal = new Array();
var myLinkType;
// для диапазона страниц документа
for (var myPageCounter = SecStart; myPageCounter <  SecEnd; myPageCounter++) {
  CurrtPage = mySegDoc.pages[myPageCounter];
  if (StartEC == CurrtPage.name) {NPageStart = CurrtPage.name;}
  if (NPageStart != -1) {
   // дополняем массив графическими объектами страницы
   for (myGaphicsCounter = 0; myGaphicsCounter <  CurrtPage.allGraphics.length; myGaphicsCounter++) {
    if (CurrtPage.allGraphics[myGaphicsCounter].itemLink != null) {MyGraphicsP.push(CurrtPage.allGraphics[myGaphicsCounter]);}
  // если имя текущей и финальной в диапазоне совпадают, то выходим из цикла
  if (EndgEC == CurrtPage.name)  break;
EndgEC = CurrtPage.name;
/* если не найдена первая страница в диапазоне,
то считаем, что диапазон внутри секции задан неправильно,
заполняем массив графическими объектами выбранной секции */
if(SNSel == true & NPageStart == -1) {
  NPageStart = mySegDoc.pages[SecStart].name;
  for(myPageCounter = SecStart; myPageCounter <  SecEnd; myPageCounter++) {
   CurrtPage = mySegDoc.pages[myPageCounter];
   // дополняем массив графическими объектами страницы
   for(myGaphicsCounter = 0; myGaphicsCounter <  CurrtPage.allGraphics.length; myGaphicsCounter++) {
    if (CurrtPage.allGraphics[myGaphicsCounter].itemLink != null) {MyGraphicsP.push(CurrtPage.allGraphics[myGaphicsCounter]);}
  EndgEC = CurrtPage.name;
MyGraphicsPFinal.push(MyGraphicsP);
MyGraphicsPFinal.push(NPageStart);
MyGraphicsPFinal.push(EndgEC);
return MyGraphicsPFinal;
/* Функция возвращает массив параметров секций документа.
ArrFSecPageNumbers [section number][0] - порядковый номер первой страницы секции,
ArrFSecPageNumbers [section number][1] - "true" - включать префикс секции при нумерации,
ArrFSecPageNumbers [section number][2] - префикс секции,
ArrFSecPageNumbers [section number][3] - номер первой страницы секции,
ArrFSecPageNumbers [section number][4] - количество страниц в секции.*/
function SecRangeOfPages (myDocument) {
var mySecEnd = 0;
var ArrFSecPageNumbers = new Array();
var SectionOfPage = myDocument.pages[0].appliedSection;
var SecPrefixName = SectionOfPage.sectionPrefix;
var SecPnumStart =  SectionOfPage.pageNumberStart;
var SecIncludePrfx = SectionOfPage.includeSectionPrefix;
ArrFSecPageNumbers.push([0, SecIncludePrfx, SecPrefixName, SecPnumStart, 0]);
for (var myPageCounter = 0; myPageCounter <  myDocument.pages.length; myPageCounter++) {
  CurrentSection = myDocument.pages[myPageCounter].appliedSection;
  if (SectionOfPage != CurrentSection) {
   SecPrefixName = CurrentSection.sectionPrefix;
   SecPnumStart =  CurrentSection.pageNumberStart;
   SecIncludePrfx = CurrentSection.includeSectionPrefix;
   ArrFSecPageNumbers[ArrFSecPageNumbers.length-1][4] = mySecEnd;
   mySecEnd = 0;
   ArrFSecPageNumbers.push([myPageCounter, SecIncludePrfx, SecPrefixName, SecPnumStart, mySecEnd]);
   SectionOfPage = CurrentSection;
  mySecEnd++;
ArrFSecPageNumbers[ArrFSecPageNumbers.length-1][4] = mySecEnd;
return ArrFSecPageNumbers;
/* Функция удаления папок и системных файлов из массива объектов выбранной папки.
Возвращает массив типов файлов (расширений). */
function ExtenSysCheck (ArrayFilesExt) {
var GrFilesExtArr = new Array();
var CurrFile;
for (var myCr = 0; myCr < ArrayFilesExt.length; myCr++) {
  CurrFile = ArrayFilesExt[myCr];
  // не папка, не системный файл
  if (typeof CurrFile.open != "undefined" && !MacOsXSysFile(CurrFile))
  GrFilesExtArr.push(FileNExt(CurrFile));
GrFilesExtArr = getUniqObjArray(GrFilesExtArr);
return GrFilesExtArr;
/* Функция определения "системного файла" по расширению,
если имя файла начинается с точки, то определяем его как системный файл (для Mac OS X). */
function MacOsXSysFile(FileNamePath) {
var myFileNamePath = String(FileNamePath);
var EndFullPath = myFileNamePath.lastIndexOf("/");
var myFileFirstT = myFileNamePath.substr(EndFullPath+1, 1);
if (myFileFirstT == ".") {return true;}
var ExtCurrFile = FileNExt (myFileNamePath);
if(ExtCurrFile.length > 2 && ExtCurrFile.length < 5) {
  var SysExtArr = new Array ("DAT","VOL","APP","INI","SYS","COM","BAT","BAK", "ATM","TMP","DLL","REG","OLD","LOG","CFG","JSX","OTF","PFB","PFM","TTF","FON","LNK","EXE" );
  for (var extCr = 0; extCr < SysExtArr.length; extCr++) {
   if (ExtCurrFile == SysExtArr[extCr] || ExtCurrFile == SysExtArr[extCr].toLowerCase()) return true;}
else return true;
return false;
/* Функция проверки дубликатов имен файлов
(с расширением - при замене на идентичный тип или без расширения).
Возвращает массив графических объектов с "разрешением замены" - ArrayGraphObjReLinksSt.
Игнорируются файлы с дублирующимися именами:
с расширением - при замене на тип файлов "идентичный",
без расширения - при замене на выбранный тип, при отличающихся полных именах файлов. */
function FindDuplicatesNames (ArrayGraphObj, myextSel, DotFirst) {
var NameNoExt = "";
var NameNoExtArr = new Array();
var ArrayGraphObjReLinksSt = new Array();
var IndFD = new Array();
// заполняем массив имен файлов
for (var myCr = 0; myCr < ArrayGraphObj.length; myCr++) {
  if (myextSel != nameNCE) {NameNoExt = FileNameWtExt (ArrayGraphObj[myCr].itemLink.name, DotFirst);}
  else {NameNoExt = ArrayGraphObj[myCr].itemLink.name;}
  NameNoExtArr.push (NameNoExt);
for (myCr = 0; myCr < ArrayGraphObj.length; myCr++) {
  var PathExtArr = new Array();
  IndFD = checkDoubled (NameNoExtArr, NameNoExtArr[myCr]);
  if (IndFD.length > 1){
    for (var myDuplidx = 0; myDuplidx < IndFD.length; myDuplidx++) {PathExtArr.push(ArrayGraphObj[IndFD[myDuplidx]].itemLink.filePath);}   
    if (getUniqObjArray(PathExtArr).length == 1) {ArrayGraphObjReLinksSt.push([ArrayGraphObj[myCr], true]);}
    else {ArrayGraphObjReLinksSt.push([ArrayGraphObj[myCr], false]);}
  else {ArrayGraphObjReLinksSt.push([ArrayGraphObj[myCr], true]);}
return ArrayGraphObjReLinksSt;
/* Функция определения расширения файла, возвращает часть строки от крайней правой точки. */
function FileNExt (FileNamePath) {
var myFileNamePath = String (FileNamePath);
var myFileNEnd = myFileNamePath.lastIndexOf (".");
if (myFileNEnd != -1) {myFileNamePath = myFileNamePath.substr(myFileNEnd+1);}
return myFileNamePath;
/* Функция удаляет расширение файла,
возвращает строку от начала myFileName до первого (при myDotOrd = true)
или последнего символа точки (myDotOrd = false). */
function FileNameWtExt (myFileName, myDotOrd) {
var myFileNamePath = String (myFileName);
var myFileNEnd = myFileNamePath.lastIndexOf (".");
if (myFileNEnd != -1) {
  myFileNamePath = myFileName.substr (0, myFileNEnd);
  if (myDotOrd) {
   // рекурсивный вызов функции
   myFileNamePath = FileNameWtExt (myFileNamePath, true);
return myFileNamePath;
/* Функция получения массива типов графических файлов, которые используются в документе (ActDoc).
Выполняется Unlock Position для всех объектов и групп с графическими изображениями документа.
Определяется количество изображений, которые были вставлены в документ из буфера обмена (Null Link). */
function GetFileTypeInDoc (ActDoc) {
var myObject;
var myImageType;
var myDocTypeArr = new Array();
var myDocUniqTypeArr;
var myResultDocTypeAndCounters = new Array();
for (var myCr = 0; myCr < ActDoc.allGraphics.length; myCr++) {
  myObject = ActDoc.allGraphics[myCr];
  myUnlock_ParentRe (myObject);
  try {
   myImageType = myObject.itemLink.linkType;
   myDocTypeArr.push(myImageType);
  catch (e) {
   mySelection_ParentRe(myObject, myObject);
   if (!confirm(alertWithoutLink, "", inScriptName)) {exit();}
myDocUniqTypeArr = getUniqObjArray(myDocTypeArr);
for (myCr = 0; myCr < myDocUniqTypeArr.length; myCr++) {
  myResultDocTypeAndCounters.push([myDocUniqTypeArr[myCr], checkDoubled(myDocTypeArr, myDocUniqTypeArr[myCr]).length]);
return myResultDocTypeAndCounters;
/* Функция осуществляет переход в активном окне на разворот
с объектом myGraphObj и выделяет mySelectObj, если обект не является содержимым текстового блока. */
function mySelection_ParentRe (myGraphObj, mySelectObj) {
app.activeDocument.select (mySelectObj);
app.activeWindow.zoom (2053206906);
if (myGraphObj.parent.constructor.name != "Story") {
  try {app.activeWindow.activeSpread = myGraphObj.parent;}
  // рекурсивный вызов при ошибке
  catch (e) {mySelection_ParentRe(myGraphObj.parent, mySelectObj);}
// Функция выполняет UnLock Positon изображения myGraphObj
function myUnlock_ParentRe (myGraphObj) {
try {myGraphObj.parent.locked = false;}
// рекурсивный вызов при ошибке
catch (e) {myUnlock_ParentRe(myGraphObj.parent);}
/* Функция выполняет поиск "истинности" атрибута Nonprinting для изображения и групп, включающих текущий объект. */
function myNonprint_ParentRe (myGraphNObj) {
try {
  var mNonPrRes = myGraphNObj.nonprinting;
  // условие рекурсивного вызова функции
  if (mNonPrRes == false) {
   mNonPrRes = myNonprint_ParentRe (myGraphNObj.parent);
   if (mNonPrRes) {return true;}
  else {return true;}
catch (e) {return false;}
/* Функция отменяет "истинность" атрибута Nonprinting
для изображения, его контейнера и групп, включающих текущий объект. */
function myNonpFalse_ParentRe (myGraphFObj) {
try {
  myGraphFObj.nonprinting = false;
  myNonpFalse_ParentRe(myGraphFObj.parent);
catch (e) {}
/* Функция поиска дубликата myObject в массиве myArray. Возвращает массив индексов найденных дубликатов в массиве. */
function checkDoubled(myArray, myObject) {
var IndxDupls = new Array();
for (var objCnr = 0; objCnr < myArray.length; objCnr++) {
  if (myObject == myArray[objCnr]) {IndxDupls.push(objCnr);}
return IndxDupls;
/* Функция возвращает массив myResultArr из неповторяющихся объектов массива myArray. */
function getUniqObjArray (myArray) {
var myResultArr = new Array();
var myObject;
for (var myCounter = 0; myCounter < myArray.length; myCounter++) {
  myObject = myArray[myCounter];
  if (checkDoubled(myResultArr, myObject).length == 0) {myResultArr.push(myObject);}
return myResultArr;
function cr() {if (mn != "\u00A9\ \u0044\u006D\u0069\u0074\u0072\u0069\u0079\ \u004C\u0061\u0070\u0061\u0079\u0065\u0076") exit();}
/* Функция получения графических объектов выбранных типов (ArrTypeFind) из массива (myRastrImageArray). */
function getTypeRastrImages (myRastrImageArray, ArrTypeFind) {
var myTypeResult = new Array();
var myObject;
var myTypeImage;
for (var myCounter = 0; myCounter < myRastrImageArray.length; myCounter++) {
  myObject = myRastrImageArray[myCounter];
  myTypeImage = myObject.itemLink.linkType;
  for (var TypeCr = 0; TypeCr < ArrTypeFind.length; TypeCr++) {
   if (myTypeImage == ArrTypeFind[TypeCr][1] && ArrTypeFind[TypeCr][0] == true) {
    myTypeResult.push(myObject);
return myTypeResult;
/* Функция поворота изображения myRImage на 90° по часовой стрелке или против,
в диалоге выбирается направление вращения. После вращения:
изображению присваиваются значения geometricBounds исходного,
возвращается счетчик действий над изображением - myCountNone.
myImageArrPars  (horizontalScale, verticalScale, shearAngle, rotationAngle, geometricBounds). */
function myRotateUIDialog (myRImage, myImageArrPars, myCountNone) {
// Прогнозирование возможного поворота изо

Check out my Update path names in links script: http://www.kasyan.ho.com.ua/relink.html
Kasyan

Similar Messages

  • Hi, I couldn't download apps on my iPad 1. It say iOS update required for this action whereby my software is the latest 5.1.1

    I couldn't download apps using my iPad 1. It says that iOS update required for this action.

    Some developers allow you to download older compatible versions of their apps. If it's a free app then try downloading the current version on your computer's iTunes so that the app is in your purchase history, then on your iPad go to the Purchased tab in the App Store app and see if you can download an older compatible version of it. If it's a paid-for app then contact the developer first and ask them if the above will work, don't buy it and then find it won't

  • This script is not updating or returning anything..

    This script is not updating or returning anything.. Ive also tried running it as a Stored Procedure but didnt get very far..
    I'm reluctant to remove the line from the get_employee cursor that gets only one record..
    Also, Ive got a couple of 'dbms_output..' lines to catch the employee number but nothing. Can anyone suggest how I at least debug it?
    I can also supply it as Stored Procedure but I didnt really know how to run it and it just hung in UNIX at what looked at the last line number..
    here's the code
    /* Formatted on 2009/04/22 14:43 (Formatter Plus v4.8.7) */
    SET serveroutput ON SIZE 1000000 FORMAT WRAPPED
    SET verify OFF
    SET feedback OFF
    DECLARE
    -- Debugging/error handling
    -- Work variables
       p_emp_number                     VARCHAR2 (14);
       v_rec_cnt                        NUMBER                     := 0;
       insert_flag                      VARCHAR2 (8);
       job_exists                       VARCHAR2 (8);
       err_num                          NUMBER;
       err_msg                          VARCHAR2 (150);
       err_line                         VARCHAR2 (350);
       err_seq                          NUMBER                     := 0;
       l_date                           DATE                       := SYSDATE;
       l_validate                       BOOLEAN                    DEFAULT FALSE;
       l_ass_obj                        NUMBER;
       l_emp_obj                        NUMBER;
       l_default_code_comb_id           NUMBER                     := 217269;
       l_datetrack_update_mode          VARCHAR2 (30)             := 'CORRECTION';
       l_organization_id                NUMBER                     := 0;
       l_concatenated_segments          VARCHAR2 (240);
       l_soft_coding_keyflex_id         NUMBER;
       l_comment_id                     NUMBER;
       l_effective_end_date             DATE
                                        := TO_DATE ('17-FEB-2059', 'DD-MON-YYYY');
       l_no_managers_warning            BOOLEAN;
       l_special_ceiling_step_id        NUMBER;
       l_people_group_id                NUMBER;
       l_group_name                     VARCHAR2 (30);
       l_entries_changed_warning        VARCHAR2 (30);
       l_spp_delete_warning             BOOLEAN;
       l_org_now_no_manager_warning     BOOLEAN;
       l_tax_district_changed_warning   BOOLEAN;
       l_other_manager_warning          BOOLEAN;
       l_business_group_id              NUMBER                     := 0;
       l_person_id                      NUMBER;
       l_assignment_number              VARCHAR2 (35);
       l_style                          VARCHAR2 (4)               := 'GB';
       ip_p_address_id                  NUMBER;
       l_effective_date                 DATE                       := SYSDATE;
       l_date_from                      DATE                       := SYSDATE;
       l_date_to                        DATE                       := NULL;
    -- CURSOR 1 - get all Existing Employees (well, for testing purps.. just Peter Barlow for now..)
       CURSOR c_get_employee_details
       IS
          SELECT DISTINCT per.person_id, per.employee_number, per.full_name,
                          paas.assignment_id, paas.supervisor_id,
                          paas.default_code_comb_id
                     FROM per_all_people_f per, per_all_assignments_f paas
                    WHERE per.employee_number = p_emp_number
                      AND paas.person_id(+) = per.person_id
                      AND per.person_id = '30188';
    -- CURSOR 2 - get all Existing Employees (well, for testing purps.. just Peter Barlow for now..)
       CURSOR c_check_employee (p_emp_number VARCHAR2)
       IS
          SELECT DISTINCT per.person_id, per.employee_number, per.full_name,
                          paas.assignment_id, paas.supervisor_id,
                          paas.default_code_comb_id
                     FROM per_all_people_f per, per_all_assignments_f paas
                    WHERE per.employee_number = p_emp_number
                      AND paas.person_id(+) = per.person_id
                      AND per.person_id = '30188';
       emp_rec                          c_check_employee%ROWTYPE;
    -- Cursor 3 to SELECT all existing Employees that DO NOT have a JOB specified.
    /*   CURSOR c_check_emps_job (p_emp_number VARCHAR2)
       IS
          SELECT DISTINCT per.person_id, per.full_name, paas.assignment_id,
                          paas.supervisor_id, paas.default_code_comb_id
                     FROM per_all_people_f per, per_all_assignments_f paas
                    WHERE per.employee_number = p_emp_number
                      AND paas.person_id(+) = per.person_id
                      AND paas.job_id IS NULL
                      AND per.person_id = '30188';
       empjob_rec                       c_check_emps_job%ROWTYPE;
    -- Cursor 4 retrieves latest Object Version Number from per_assignments_f table..
       CURSOR csr_ass_ovn (cp_person_id IN per_all_people_f.person_id%TYPE)
       IS
          SELECT MAX (paas.object_version_number)
            FROM per_assignments_f paas, per_all_people_f per
           WHERE paas.person_id = per.person_id
             AND per.employee_number = paas.assignment_number
             AND per.person_id = cp_person_id;
    BEGIN
    -- UPDATE of EXISTING Employees Details from work table..
       FOR v_emp IN c_get_employee_details
       LOOP
    -- determine whether customer already exists
          OPEN c_check_employee (v_emp.employee_number);
          FETCH c_check_employee
           INTO emp_rec;
          IF c_check_employee%FOUND
          THEN
             insert_flag := 'I';
             DBMS_OUTPUT.PUT_LINE ('Employee No: ' || v_emp.employee_number);
          ELSE
             DBMS_OUTPUT.PUT_LINE (   'Employee No: '
                                   || v_emp.employee_number
                                   || '  has not been found!  '
             insert_flag := 'X';
          END IF;
          CLOSE c_check_employee;
    -- determine which customers already have been assigned a Job
          /*  OPEN c_check_emps_job (v_emp.employee_number);
           FETCH c_check_emps_job
           INTO empjob_rec;
           IF c_check_emps_job%FOUND
          THEN       job_exists := 'X';   -- so we're wanting all those with job_exists := 'X'..
          ELSE        job_exists := 'I';
          END IF;
          CLOSE c_check_employee;
    -- Obtain the most recent Object Version Number..
          OPEN csr_ass_ovn (v_emp.person_id);
          FETCH csr_ass_ovn
           INTO l_ass_obj;
          CLOSE csr_ass_ovn;
    -- Now Update PER_ALL_PEOPLE_F and PER_ASSIGNMENTS with default Cost Code '9999'
          IF insert_flag = 'I'
          THEN
             BEGIN
         DBMS_OUTPUT.PUT_LINE (   ' Updating Employee..:' || v_emp.employee_number );
                -- Importing Emp Job, Default Cost Code and Supervisor details --
                Hr_Assignment_Api.update_emp_asg
                   (p_validate                    => l_validate,
                    p_effective_date              => SYSDATE,           -- l_date,
                    p_datetrack_update_mode       => l_datetrack_update_mode,
                    p_assignment_id               => v_emp.assignment_id,
                                                          --- ** REQUIRED FIELD **
                    p_object_version_number       => l_ass_obj,
                    p_supervisor_id               => v_emp.supervisor_id,
                    p_default_code_comb_id        => l_default_code_comb_id,
                    p_concatenated_segments       => l_concatenated_segments,
                    p_soft_coding_keyflex_id      => l_soft_coding_keyflex_id,
                    p_comment_id                  => l_comment_id,
                    p_effective_start_date        => l_date,              --IN/OUT
                    p_effective_end_date          => l_effective_end_date,
                    p_no_managers_warning         => l_no_managers_warning,
                    p_other_manager_warning       => l_other_manager_warning
                Hr_Assignment_Api.update_emp_asg_criteria
                   (p_validate                          => l_validate,
                    p_effective_date                    => SYSDATE,     -- l_date,
                    p_datetrack_update_mode             => l_datetrack_update_mode,
                    p_assignment_id                     => v_emp.assignment_id,
                                                          --- ** REQUIRED FIELD **
                    p_object_version_number             => l_ass_obj,
                    p_organization_id                   => l_organization_id,
    --            p_location_id                       => std_location_id,
    --            p_job_id                            => l_job_id,
    --            p_position_id                       => std_position_id,
                    p_special_ceiling_step_id           => l_special_ceiling_step_id,
                    p_effective_start_date              => l_date,
                    p_effective_end_date                => l_effective_end_date,
                    p_people_group_id                   => l_people_group_id,
                    p_group_name                        => l_group_name,
                    p_org_now_no_manager_warning        => l_org_now_no_manager_warning,
                    p_other_manager_warning             => l_other_manager_warning,
                    p_spp_delete_warning                => l_spp_delete_warning,
                    p_entries_changed_warning           => l_entries_changed_warning,
                    p_tax_district_changed_warning      => l_tax_district_changed_warning
                DBMS_OUTPUT.PUT_LINE (   ' Employee Updated..:'
                                      || v_emp.employee_number
    -- End of customer related details
             END;
          END IF;
       END LOOP;
       COMMIT;
    EXCEPTION
       WHEN NO_DATA_FOUND
       THEN
          ROLLBACK;
    -- DBMS_OUTPUT.PUT_LINE ( '"No Data Found" for Employee:'  || v_emp.employee_number || SQLERRM );
       WHEN OTHERS
       THEN
          ROLLBACK;
          err_num := TO_CHAR (SQLCODE);
          err_msg := SUBSTR (SQLERRM, 1, 150);
          err_line :=
                'Oracle error (seqno='
             || err_seq
             || ') '
             || err_num
             || ' occurred processing record '
             || TO_CHAR (v_rec_cnt + 1)
             || ' : '
             || err_msg;
          DBMS_OUTPUT.PUT_LINE (err_line);
          INSERT INTO SU_SL_ERRORS
               VALUES (err_num, err_msg, SYSTIMESTAMP);
    END;
    EXIT;

    Hi
    Check if that works for you
    /* Formatted on 2009/04/22 14:43 (Formatter Plus v4.8.7) */
    SET serveroutput ON SIZE 1000000 FORMAT WRAPPED
    SET verify OFF
    SET feedback OFF
    DECLARE
    -- Debugging/error handling
    -- Work variables
       p_emp_number                     VARCHAR2 (14);
       v_rec_cnt                        NUMBER                     := 0;
       insert_flag                      VARCHAR2 (8);
       job_exists                       VARCHAR2 (8);
       err_num                          NUMBER;
       err_msg                          VARCHAR2 (150);
       err_line                         VARCHAR2 (350);
       err_seq                          NUMBER                     := 0;
       l_date                           DATE                       := SYSDATE;
       l_validate                       BOOLEAN                    DEFAULT FALSE;
       l_***_obj                        NUMBER;
       l_emp_obj                        NUMBER;
       l_default_code_comb_id           NUMBER                     := 217269;
       l_datetrack_update_mode          VARCHAR2 (30)             := 'CORRECTION';
       l_organization_id                NUMBER                     := 0;
       l_concatenated_segments          VARCHAR2 (240);
       l_soft_coding_keyflex_id         NUMBER;
       l_comment_id                     NUMBER;
       l_effective_end_date             DATE
                                        := TO_DATE ('17-FEB-2059', 'DD-MON-YYYY');
       l_no_managers_warning            BOOLEAN;
       l_special_ceiling_step_id        NUMBER;
       l_people_group_id                NUMBER;
       l_group_name                     VARCHAR2 (30);
       l_entries_changed_warning        VARCHAR2 (30);
       l_spp_delete_warning             BOOLEAN;
       l_org_now_no_manager_warning     BOOLEAN;
       l_tax_district_changed_warning   BOOLEAN;
       l_other_manager_warning          BOOLEAN;
       l_business_group_id              NUMBER                     := 0;
       l_person_id                      NUMBER;
       l_assignment_number              VARCHAR2 (35);
       l_style                          VARCHAR2 (4)               := 'GB';
       ip_p_address_id                  NUMBER;
       l_effective_date                 DATE                       := SYSDATE;
       l_date_from                      DATE                       := SYSDATE;
       l_date_to                        DATE                       := NULL;
    -- CURSOR 1 - get all Existing Employees (well, for testing purps..
    just Peter Barlow for now..)
       CURSOR c_get_employee_details
       IS
          SELECT DISTINCT per.person_id, per.employee_number, per.full_name,
                          paas.assignment_id, paas.supervisor_id,
                          paas.default_code_comb_id
                     FROM per_all_people_f per, per_all_assignments_f paas
                    WHERE per.employee_number = p_emp_number
                      AND paas.person_id(+) = per.person_id
                      AND per.person_id = '30188';
    -- CURSOR 2 - get all Existing Employees (well, for testing purps.. just Peter Barlow for now..)
       CURSOR c_check_employee (p_emp_number VARCHAR2)
       IS
          SELECT DISTINCT per.person_id, per.employee_number, per.full_name,
                          paas.assignment_id, paas.supervisor_id,
                          paas.default_code_comb_id
                     FROM per_all_people_f per, per_all_assignments_f paas
                    WHERE per.employee_number = p_emp_number
                      AND paas.person_id(+) = per.person_id
                      AND per.person_id = '30188';
       emp_rec                          c_check_employee%ROWTYPE;
    -- Cursor 4 retrieves latest Object Version Number from per_assignments_f table..
       CURSOR csr_***_ovn (cp_person_id IN per_all_people_f.person_id%TYPE)
       IS
          SELECT MAX (paas.object_version_number)
            FROM per_assignments_f paas, per_all_people_f per
           WHERE paas.person_id = per.person_id
             AND per.employee_number = paas.assignment_number
             AND per.person_id = cp_person_id;
    BEGIN
    -- UPDATE of EXISTING Employees Details from work table..
       FOR v_emp IN c_get_employee_details
       LOOP
    -- determine whether customer already exists
          OPEN c_check_employee (v_emp.employee_number);
          LOOP
          FETCH c_check_employee
           INTO emp_rec;
          IF c_check_employee%FOUND
          THEN
             insert_flag := 'I';
             DBMS_OUTPUT.PUT_LINE ('Employee No: ' || v_emp.employee_number);
          ELSE
             DBMS_OUTPUT.PUT_LINE (   'Employee No: '
                                   || v_emp.employee_number
                                   || '  has not been found!  '
             insert_flag := 'X';
          END IF;
          END LOOP;
          CLOSE c_check_employee;
    -- Obtain the most recent Object Version Number..
          OPEN csr_***_ovn (v_emp.person_id);
          LOOP
          FETCH csr_***_ovn
           INTO l_***_obj;
          END LOOP;
          CLOSE csr_***_ovn;
    -- Now Update PER_ALL_PEOPLE_F and PER_ASSIGNMENTS with default Cost Code '9999'
          IF insert_flag = 'I'
          THEN
             BEGIN
         DBMS_OUTPUT.PUT_LINE (   ' Updating Employee..:' || v_emp.employee_number );
                -- Importing Emp Job, Default Cost Code and Supervisor details --
                Hr_Assignment_Api.update_emp_asg
                   (p_validate                    => l_validate,
                    p_effective_date              => SYSDATE,           -- l_date,
                    p_datetrack_update_mode       => l_datetrack_update_mode,
                    p_assignment_id               => v_emp.assignment_id,
                                                          --- ** REQUIRED FIELD **
                    p_object_version_number       => l_***_obj,
                    p_supervisor_id               => v_emp.supervisor_id,
                    p_default_code_comb_id        => l_default_code_comb_id,
                    p_concatenated_segments       => l_concatenated_segments,
                    p_soft_coding_keyflex_id      => l_soft_coding_keyflex_id,
                    p_comment_id                  => l_comment_id,
                    p_effective_start_date        => l_date,              --IN/OUT
                    p_effective_end_date          => l_effective_end_date,
                    p_no_managers_warning         => l_no_managers_warning,
                    p_other_manager_warning       => l_other_manager_warning
                Hr_Assignment_Api.update_emp_asg_criteria
                   (p_validate                          => l_validate,
                    p_effective_date                    => SYSDATE,     -- l_date,
                    p_datetrack_update_mode             => l_datetrack_update_mode,
                    p_assignment_id                     => v_emp.assignment_id,
                                                          --- ** REQUIRED FIELD **
                    p_object_version_number             => l_***_obj,
                    p_organization_id                   => l_organization_id,
    --            p_location_id                       => std_location_id,
    --            p_job_id                            => l_job_id,
    --            p_position_id                       => std_position_id,
                    p_special_ceiling_step_id           => l_special_ceiling_step_id,
                    p_effective_start_date              => l_date,
                    p_effective_end_date                => l_effective_end_date,
                    p_people_group_id                   => l_people_group_id,
                    p_group_name                        => l_group_name,
                    p_org_now_no_manager_warning        => l_org_now_no_manager_warning,
                    p_other_manager_warning             => l_other_manager_warning,
                    p_spp_delete_warning                => l_spp_delete_warning,
                    p_entries_changed_warning           => l_entries_changed_warning,
                    p_tax_district_changed_warning      => l_tax_district_changed_warning
                DBMS_OUTPUT.PUT_LINE (   ' Employee Updated..:'
                                      || v_emp.employee_number
    -- End of customer related details
             END;
          END IF;
       END LOOP;
       COMMIT;
    END;
    EXIT;Thanks

  • I'm trying to update iTunes to 10.5.2 and I get the message that "a program required for this install to complete could not be run".  I've tried all of the steps to try to resolve this (I have a PC) but nothing works.  Help please!

    I'm trying to update iTunes to 10.5.2.  I have a Windows 7 64-bit Dell laptop, and when I try to update it, I get the message "There is a problem with this Windows Installer package.  A program required for this install to complete could not be run.  Contact your support personnel or package vendor." 
    I went to the troubleshooting page and did all of the steps they listed:  uninstalled iTunes, deleted by Temp files, even disabled AVG while I downloaded again and tried to install.  I still get the same message.  If anyone can help me, I would really appreciate it!

    You must have gone to the old microsoft post.
    Here is the link:
    http://support.microsoft.com/kb/2438651

  • I just bought an iPhone 5, and tried to sync it to my iTunes account but when connected it says:  "...cannot be used because it requires iTunes version 10.7 or later." However when I try to get iTunes to update it says: "This version of iTunes (10.6.3) is

    I just bought an iPhone 5, and tried to sync it to my iTunes account but when connected it says:  “...cannot be used because it requires iTunes version 10.7 or later.” However when I try to get iTunes to update it says: “This version of iTunes (10.6.3) is the current version.” Can anyone help?

    filterc-r wrote:
    Thanks for your reply. My Mac is running 10.5.8: it's 4 years old.  When I try to update the OS software, I'm told there are none available.
    Be careful - there's a difference between update and upgrade.  Your machine is saying there are no updates available, meaning no later versions of OS X 10.5 (Leopard).  However, you can very likely upgrade - at least to OS X 10.6 (Snow Leopard), and possibly then to OS X 10.8 (Mountain Lion).
    Updates are free, but upgrades cost a bit.  That's the dirference.

  • I'm not able to download Itunes.  I keep getting this Apple Software Update message that states "There is a problem with this Windows installer package.  A program required for this install to complete could not be run.  Contact your package vendor"

    Not able to access Itunes store anymore.  Just quit working for no reason.  I've tried deleting Itunes and related components from the Control Panel, but when I try to remove Apple Software Update, I get a message that states "There is a problem with this Windows installer package.  A program required for this install to complete could not be run.  Contact your support personnel or package vendor".  Not sure what this message means.  Am I suppose to contact Apple ?  What is meant by package vendor ?

    Apparently it's an itunes issue. I just tried to update and got the same issue. Called att to activate my iphone 4s and they say they can do the swap but apple is telling them itunes is down atm.  So will have to wait

  • I'm trying to run an Apple itunes update  on my Dell   with Windows 7. Doing so I do get the message "There is a problem with this Windows Installer package.  A program required for this install to complete could not be run. Contact your support

    I am trying to update my iphone 4, but in order to do that I need to update itunes.  I am unable to do this, or update quicktime.  I get an error message that says
    "A program required for this install to complete could not be run.  Contact your support personnel or package vendor." I have a dell running windows 7

    Perhaps let's first try updating your Apple Software Update.
    Launch Apple Software Update ("Start > All Programs > Apple Software Update"). Does it launch and offer you a newer version of Apple Software Update? If so, choose to install just that update to Apple Software Update. (Deselect any other software offered at the same time.)
    If the ASU update goes through okay, try another iTunes install. Does it go through without the errors this time?

  • I am trying to update my iPhone software but to do so I needed to update iTunes.  When I try to do that, I keep getting this error message" "There is a problem with this Windows Installer Package. A program required for this install to complete could not

    I am trying to update my iPhone software but to do so I needed to update iTunes.  When I try to do that, I keep getting this error message" "There is a problem with this Windows Installer Package. A program required for this install to complete could not....

    Try the following user tip:
    "There is a problem with this Windows Installer package ..." error messages when installing iTunes for Windows

  • When tried to update my itunes to 10.5 I got this message: There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor.

    I got the iPod touch, when i went to connect it to my computer to upload my music to it, It said that I need to upgrade to 10.5 but when I did I got the message below. So I tried uninstalling itunes and quick time and I cant download it at all and still get the message below. I have NO itunes on my computer now.  =(
    The message I get is::
         There is a problem with the Window installer package. A program required for this intall to complete could not be run. Contact your support personnel or package venfor.
    I have no idea what this message means or what to do....

    There is a problem with the Window installer package. A program required for this intall to complete could not be run. Contact your support personnel or package venfor.
    Perhaps let's first try updating your Apple Software Update.
    Launch Apple Software Update ("Start > All Programs > Apple Software Update"). Does it launch and offer you a newer version of Apple Software Update? If so, choose to install just that update to Apple Software Update. (Deselect any other software offered at the same time.)
    If the ASU update goes through okay, try another iTunes install. Does it go through without the errors this time?

  • Apple software update 2.1.3 is giving error  "There is a problem with this Windows Installer package. A program required for this install to complete could not be run."

    Apple Software Update 2.1.3.127 will not install i keep getting the error
    “There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your personnel package vendor. ”
    i have tried to uninstall itunes and reinstall and i can not get it to install

    Try the following user tip:
    "There is a problem with this Windows Installer package ..." error messages when installing iTunes for Windows

  • HT1926 When I try to update ITunes on my PC (Windows XP), the repeated message is "There is a problem with this Windows Installer package.  A program required for this install to complete could not be run.  Contact your support personnel or package vendor

    How to update ITunes on my PC (Windows XP)?? Repeated attempts produce this messsage: "There is a problem with this Windows Installer package.  A program required for this install to complete could not be run.  Contact your support personnel or package vendor."  I have an older version of ITunes on the computer.  Why can't I update it?
    MMettler

    Repair your Apple software update.
    Go to START > ALL PROGRAMS > Apple Software Update. If it offers you a newer version of Apple Software Update, do it but Deselect any other software offered at the same time. Once done, try another iTunes install
    If you don't find ASU, go to Control Panel:
    START > CONTROL PANEL/ > Add n Remove Programs, highlight ASU and click CHANGE then REPAIR

  • I'm trying to update itunes and keep getting the message"There is a problem with this windows installer package. A program required for this install to complete could not be run. Contact your support personal or package vendor"  Anyone know now to fix?

    I keep getting the message" There ais a problem with this windows Installer Package. A program required for this install to complete could not be run. Contact your support personnal or package vendor".  I get this whentrying to update itunes. 
    Does anyone have a idea how to fix this/
    Thanks

    Try the following user tip:
    "There is a problem with this Windows Installer package ..." error messages when installing iTunes for Windows

  • I went to update my itunes and I get the following message:  there is a problem with this windows installer package, a program required for this install to complete could not be run.  I uninstalled the old itune and reinstalled the new one and i get the s

    I went to upgrade itunes and when it finally downloaded, i got the following message:  There is a problem with this windows installer. A program required for this install to complete could not be run.
    I was advised to unistall the old itune, which i did and then loaded the latest itune 10.5 i think.  It dowloaded fine to a point and before finishing, it came up with the same message.
    Is the problem with the itune installer or my windows installer on my laptop?

    Repair your Apple software update.
    Go to START/ALL PROGRAMS/Apple Software Update. If it offers you a newer version of Apple Software Update, do it but Deselect any other software offered at the same time. Once done, try another iTunes install
    If you don't find ASU, go to Control Panel:
    START/CONTROL PANEL/Programs n Features/highlight ASU and click REPAIR,

  • I have deleted safari on os x 10.7.1  , and now I can not install it , he say " This update requires mac ox 10.6 "

    I have problems in the Safari browser  , and I have deleted the program using the "Clean My Mac" App and now I can not install it , he say " This update requires mac ox 10.6 "
    I would like to install the Safari browser on my system Lion os x 10.7.1 …..

    Upgrading to Snow Leopard
    You must purchase Snow Leopard through the Apple Store: Mac OS X 10.6 Snow Leopard - Apple Store (U.S.). The price is $19.99 plus tax. You will be sent physical media by mail after placing your order.
    After you install Snow Leopard you will have to download and install the Mac OS X 10.6.8 Update Combo v1.1 to update Snow Leopard to 10.6.8 and give you access to the App Store. Access to the App Store enables you to download Mountain Lion if your computer meets the requirements.
         Snow Leopard General Requirements
           1. Mac computer with an Intel processor
           2. 1GB of memory
           3. 5GB of available disk space
           4. DVD drive for installation
           5. Some features require a compatible Internet service provider;
               fees may apply.
           6. Some features require Apple’s MobileMe service; fees and
               terms apply.
    Actually, you cannot download Snow Leopard. You downloaded a Snow Leopard updater.

  • ...desperating trying to install itunes 10.7, but it asked me to install Mac OS X 10.6.8.  I did, but then it said that I needed to install Java for Mac OS x 10.6.  I did that and now it keeps saying 'this update requires Mac OS X version 10.6??

    ....desperating trying to install itunes 10.7, but it asked me to install Mac OS X 10.6.8.  I did, but then it said that I needed to install Java for Mac OS x 10.6.  I did that and now it keeps saying 'this update requires Mac OS X version 10.6??

    Upgrading to Snow Leopard
    You must purchase Snow Leopard through the Apple Store: Mac OS X 10.6 Snow Leopard - Apple Store (U.S.). The price is $19.99 plus tax. You will be sent physical media by mail after placing your order.
    After you install Snow Leopard you will have to download and install the Mac OS X 10.6.8 Update Combo v1.1 to update Snow Leopard to 10.6.8 and give you access to the App Store. Access to the App Store enables you to download Mountain Lion if your computer meets the requirements.
         Snow Leopard General Requirements
           1. Mac computer with an Intel processor
           2. 1GB of memory
           3. 5GB of available disk space
           4. DVD drive for installation
           5. Some features require a compatible Internet service provider;
               fees may apply.
           6. Some features require Apple’s MobileMe service; fees and
               terms apply.
    Actually, you cannot download Snow Leopard. You downloaded a Snow Leopard updater.

Maybe you are looking for

  • Data Recovery from TC 4gen drive

    HI, I just had problems with my TC, it shows "drive needs to be repaired" in Air Port Utility. After trying some backup via a connected USB drive (connected to TC) i did not succeeded so I just reinitialized the TC, keeping in mind using diskwarrior

  • Active Directory Replication, have not been performed for a long time

    Good afternoon,  Situation: in the organization with a lot of domain controllers, with one of the sites lost contact. From the period of 18.07.2014 - for the present time, the replication of the two domain controllers did not happen. Now, the connect

  • JDBC to JDBC in PI 7.1

    Hi I  need to work on JDBC to JDBC adapter scenario, Can anyone send me the Blog which explains with screen to develop, Thanks PR

  • Hi .. I am trying to install a printer ( Xerox C525A ) on an existing netwo

    The netwotk is intact and I am simply replacing an older HP 2300 with the newer Xerox...C525A The problem is that I cannot see the printer over the network Are there any tricks I am missing here? Help most appreciated G5 dual core 2Ghz   Mac OS X (10

  • Fatal error - Failed to install core dll Abobe reader 9.2

    I have tried to update to the newest version of Abode reader and when I try to start the program I get a fatal error "failed to install core dll". I downloaded the newest version on another computer and it works fine so I copied the installation fold