• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Создание инсталляционного клиентского пакета (руководство и записки на полях)

install.png

Вместо вступления​

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

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

Зачем нужен данный документ? Экономия времени.

Убедительно настаиваю прочитать данный текст минимум три раза, перед тем как использовать:
  • Для ознакомления, что вообще происходит и как. Особенно дополнительный раздел;
  • Для формирования вопросов и поиска ответов на них;
  • Для закрепления информации.
И нет, я не шучу. Если использовать данный текст как инструкцию, то будет ошибка. Это все же руководство, а не конечная инструкция.

Подготовка​

Первое что необходимо сделать:
  • Определить целевой АРМ: Ноутбук/системный блок, версию ОС, объем ЖД, объем RAM.
    • Для этого подойдет статистика marvel client, достаточно бесплатной версии.
    • Да, придется написать агент для отчета, либо сидеть и выверять руками, но это необходимо.
  • Получить доступ к этому АРМ.
    • Для этого можно воспользоваться такими способами:
    • Получить АРМ физически
    • Настроить VM (предпочтительнее из-за возможности snapshot’ов)
  • Найти необходимое ПО:
    • InstallShield Tuner от IBM: только в интернете или по знакомым (HCL включила его в пак версии 11 и 12)
    • Файл ITW под необходимый целевой пакет для работы с InstallShieldTuner: на портале FlexNet
    • Nice Tool для удаления предыдущей версии Notes: на портале FlexNet
    • Установочный пакет Notes нужной версии и редакции: на портале FlexNet
    • Установочные файлы FixPack, при их необходимости: на портале FlexNet
    • Notepad или Notepad++ для редактирования bat-файлов.
  • Определить тип конечного пакета:
    • Редакция Basic или Standard
    • Notes only + MultiUser
    • Notes only + SingleUser
    • Notes only + Citrix (Multiuser only)
    • Notes + Designer
    • Notes + Designer + Administrator
  • Определить, как будет распространяться пакет по целевым АРМ:
    • Автоматически через политики или через SCCM, или другой способ доставки
    • Ручная установка на каждый АРМ
  • Определить какого рода будет конечный установочный пакет:
    • Тихая установка без показа диалога: для политик и SCCM
    • Установка с отображением прогресса: образ для Citrix, ручная установка
  • Глубоко вздохнуть и быть готовым ко всему.
Далее в данном руководстве будет описан процесс создания пакетов:
  • Standard RU Notes Only 11.0.1FP3 + MultiUser
  • Standard RU Notes Only 11.0.1FP3 + Citrix (Multiuser only)
Виды установок: тихая и установка с отображением процесса

Целевой АРМ будет представлен в виде
  • VM на базе Windows 7 Enterprise x64, 4 Gb RAM, 32 GB HDD
  • Пользователь с правами Администратора для создания пакета
  • Пользователь без прав Администратора для тестирования запуска

Настройка и установка VM​

В данном руководстве не будет описан процесс создания, установки и настройки VM. Данный процесс не является сложным и не требует специальных знаний.
Совет: После настройки VM, открытия к ней доступа по RDP, создания нужных пользователей лучше сразу же сделать «Снимок машины», чтобы можно было в любой момент вернуться на нужную точку.
Дополнительно: Можно установить и настроить несколько разных версий Notes и их редакций (Standard/Basic, MultiUser, SingleUser и так далее). Произвести подключение со всех этих клиентов к тестовым серверам, чтобы они были сконфигурированы. Затем создать снимки на каждую версию.
Это очень сильно поможет при тестировании пакета и анализа результатов, а также поможет выявить проблемы. Список проблем, с которым столкнулся автор данного руководства будет представлен в конце документа.
Итак, мы получили целевой АРМ. Заходим на него под пользователем с правами Администратора.
Сначала необходимо установить на данную машину InstallShield Tuner, просто запускаем и жмем везде Next, потом Finish.
Теперь берем обычный установщик Notes и устанавливаем целевой клиент вручную. Данный процесс мы делаем, чтобы удостовериться, что на целевом АРМ присутствуют необходимые DLL библиотеки. В частности, пакет MS Visual C++ 2015-2019 (рисунок 1)

pic1.png


Рисунок 1 – Пакет системных библиотек​

Пакет может быть найден на сайте Microsoft. Существуют версии для x86 и x64.
Без данного пакета в системе установить клиент Notes будет нельзя. Отсутствие данного пакета может быть вызвано тем, что мы имеем чистый АРМ, без дополнительного ПО и пакетов обновлений, которые могут быть у пользователя. В 99% данный пакет уже будет в системе, но, если нет – вы знаете что делать.
Теперь мы сделаем снимок машины. В данном случае это будет наша стартовая точка «zero_point», куда мы будет периодически возвращаться, чтобы повторить нужные действия или исправить ошибки.
После установки клиента, его необходимо сконфигурировать, то есть подключаемся к нужным серверам и смотрим что происходит. Если всё успешно, а обычно это так, то в нашем случае мы откатываемся на «zero_point», то есть на снимок до установки целевого клиента. Если же используется не VM, то с помощью Nice Tool необходимо полностью удалить целевой клиент: программную часть, папки пользователя, вычистить реестр.

Создание пакета​

Для создания пакета нам потребуется:
  • Файл конфигурации ITW, notess_ru.itw
  • Инсталлятор основного клиента Notes 11.0.1 RU
  • Nice Tool
  • Инсталлятор FixPack 3
Копируем все эти файлы в VM.
Запускаем инсталлятор клиента, НО вместо простой установки мы распаковываем файлы из него в отдельную папку. В нашем случае это c:\unpack

pic2.png

Рисунок 2 - Распаковка инсталлятора клиента​

В следующем окне мы прерываем установку клиента (рисунок 3). Нам не нужно его устанавливать, нам нужны только файлы из него. Во всех следующих окнах мы подтверждаем, что хотим выйти и закрываем окно установщика.

pic3.png

Рисунок 3 - Прерывание установки​

Теперь запускаем InstallShield Tuner. Он находится в Пуск -> Lotus Applications -> InstallShield Tuner for Lotus Notes. При запуске нас просят указать файл ITW, который требуется для создания пакета (Рисунок 4).

В нашем случае это файл «notess_ru.itw». Данный файл взят из архива «InstallShieldTuner_Notes_1101_Win_G2ML.zip» с портала FlexNet. Архив находится в категории «HCL Notes Domino 11.0.1 Group 2». Да, не в общей категории «HCL Notes Domino Complete Collaboration 11.0.1», а в отдельной.

pic4.png

Рисунок 4 – выбор файла ITW​

После выбора файла произойдет запуск InstallShield Tuner. Стартовое окно показано на рисунке 5.

pic5.png

Рисунок 5 – Стартовое окно InstallShield Tuner​

Выбираем пункт «Create a new Transform». В правой части окна появятся поля, в которых нас просят указать (рисунок 6):
Путь до MSI файла установки: выбираем файл из папки куда распаковали файлы установки.
В нашем случае C:\unpack\HCL Notes 11.0.1.msi
  • Задать имя файла ответов.
  • По умолчанию файл имеет имя как msi. Рекомендую убрать из него пробелы, в нашем случае пробелы заменены на символ подчеркивания.
  • Выставляем галку «Response Transform».
  • Можно и без нее, но тогда при запуске конечного пакета надо будет прописывать параметры. Про параметры будет указано в разделе «Дополнительно» данного руководства.
  • Так же можно эти же параметры указать в поле ввода ниже под галкой.
pic6.png

Рисунок 6 - Начальная конфигурация​

Нажимаем «Create» и сразу же стартует имитация установки клиента. Это происходит потому что мы поставили галку «Response Transform» (без нее данное окно не появляется).
Во время имитации мы задаем параметры для нашего будущего пакета:
  • Принимаем лицензию.
  • Указываем папки, куда будет установлен клиент и где будет находится папка Data.
Здесь стоит отметить, что при режиме установки MultiUser указанная в этом пункте папка Data будет является Shared и содержать в себе файлы, которые будут скопированы в папку Data конечного пользователя (%Userprofile%). Поэтому можете не менять данную настройку.
  • Указываем, какие компоненты будут установлены по умолчанию.
  • Указываем, надо ли использовать клиент Notes как программу по умолчанию для Почты, Календаря и Контактов.
  • Затем жмем кнопку «Установить».
Примечание: при имитации установки англоязычной версии есть еще один выбор: устанавливать только для текущего пользователя или для всех пользователей. В русскоязычной версии данного пункта нет. И режим MultiUser задается только в параметрах запуска конечного пакета.

Итак, мы нажали «Установить». Если все прошло успешно, мы увидим окно, где будет сказано, что файл ответов создан и находится в нашем случае: «C:\unpack\HCL_Notes_11.0.1.mst» (Рисунок 7). Нажимаем «ОК» и приступаем к тонкой настройке будущего пакета.
pic7.png

Рисунок 7 - Успешное создание файла ответов​

Тонкая настройка​

После предыдущего пункта окно InstallShield Tuner изменилось (Рисунок 8): в его левой части появилось множество пунктов, каждый из которых влияет на установочный пакет.

pic8.png

Рисунок 8 - Окно настройки пакета​

В данном руководстве не будет полного описания каждого пункта. Отчасти потому, что автор не разбирался с этим. С другой стороны потому, что для создания пакета настраивать что-то в каждом пункте не требуется.

Переходим в пункт Shortcuts (Рисунок 9). Это ярлыки, которые будут созданы после установки.

pic9.png

Рисунок 9 - Ярлыки после установки​

Тут мы можем убрать лишнее, например, HCL Notes Minder. Удаление происходит через правую кнопку мыши (рисунок 10).

pic10.png

Рисунок 10 - удаление Notes Minder​

Если есть необходимость, можно выставить свойства запуска ярлыка. Например, чтобы при открытии клиента открывалась определенная база, либо ссылка. Можно даже задать определённый путь к notes.ini. Параметр должен быть расположен до слов [INIPARAM].

pic11.png

Рисунок 11 - Указание параметров для ярлыка​

Настройка файла Notes.ini​

Переходим в пункт INI Files (Рисунок 12). Данный пункт будет влиять только на новых пользователей, которые запускают клиент в первый раз. На пользователей, у которых клиент будет обновлен данным пакетом, это влиять не будет никоем образом.
pic12.png

Рисунок 12 - Раздел INI Files​

Изначально здесь ничего нет. Предполагается, что никакие дополнительные настройки в notes.ini вносить не потребуется. Либо их можно будет донести до пользователя иным способом: политики, marvel client или служебные агенты и скрипты в самих приложениях Notes. Мы же создадим наш notes.ini, который будет иметь предустановки для новых пользователей.

Через правую кнопку мыши сделаем отображение папки, где будет располагаться прототип notes.ini (рисунок 13). Нам нужен пункт «ProgramFilesFolder»

pic13.png

Рисунок 13 - Папка где будет находиться notes.ini​

Теперь у нас появилось дерево папок. Находим в нем папку Notes и через правую кнопку мыши создаем ini-файл (рисунок 14).

pic14.png

Рисунок 14 - Создание ini-файла​

После этого файл будет создан и сразу же будет предложено его переименовать, что мы и делаем, указывая название как «Notes.ini». Теперь раскроем этот файл в дереве (рисунок 15) и переименуем секцию «NewSection1» в «Notes».
Важно имя секции указывать именно с заглавной буквы. Не надо указывать что-либо еще в имени, просто «Notes». Если указать неверно или не указать совсем, установка пакета будет происходить без проблем, но вот наш специфичный notes.ini будет игнорироваться.
В правой секции окна (рисунок 15) задаются строки нашего notes.ini.
Мы зададим следующие настройки:
  • CREATE_R10_DATABASE = 1
  • NSF_UpdateODS=1
  • DISABLE_CLIENTRECORD=1
  • TCPIP=TCP,0,15,0,,12320
  • Log=log.nsf, 1, 0, 7, 10000
  • LOGSTATUSBAR=1
  • ConfigFile=C:\ProgramData\HCL\Notes\Data\config.txt
Набор настроек может быть любым, данные настройки просто показаны как пример.
Про настройку ConfigFile указано в разделе «Дополнительно» данного руководства.

pic15.png

Рисунок 15 - Параметры Notes.ini​

Изменение набора файлов и шаблонов​

Предположим, что нам требуется заменить шаблон локальной адресной книги на наш специфичный, либо расположить некую базу на компьютер пользователя сразу после установки.
Можем ли мы так сделать сразу при установке? Да, можем.
  • Переходим в пункт «Files and Folders» (рисунок 16). Наше окно стало разделено на 4 секции:
  • Дерево каталогов/папок на текущей VM
  • Содержание каталога/папки из секции А
  • Дерево каталогов/папок на целевом АРМ
  • Содержание каталога/папки из секции C
pic16.png

Рисунок 16 - Окно Files and Folders​
Стоит обратить внимание, что в секции С, то есть на целевом АРМ, в папке «ProgramFilesFolder\HCL\Notes» содержатся шаблоны для англоязычной версии, а в папке «ProgramFilesFolder\HCL\Notes\mui\ru» локализованные шаблоны для русскоязычной версии (рисунок 17). Поэтому, если требуется добавить или заменить тот или иной шаблон, или вставить новую базу, то понадобится сделать это в двух местах.

pic17.png

Рисунок 17 - Структура папок​
В нашем случае мы меняем только русскоязычный шаблон локальной адресной книги: мы удаляем его из секции D через правую кнопку мыши и копируем новую версию из секции B. Результат на рисунке 18.
Мы заменили шаблон, чтобы в конечной names.nsf пользователя были созданы документы соединений (Connections). Это произойдет потому, что при создании базы из шаблона всегда копируются документы, которые были в этом шаблоне. Иначе говоря, создается полная копия, которая потом меняет своё расширение с NTF на NSF.
Важно: обратите внимание, что в колонке «Component» у замененного шаблона изменилось значение. Запомните его или запишите, значение понадобится позже. Если будут добавлены какие-либо дополнительные шаблоны баз, то у них так же будет изменен компонент. При этом, если базы будут в одной папке, то имя компонента будет общее для всех.
Теперь, если потребуется изменить шаблон pernames.ntf, то новую версию надо будет так же подменить в существующем пакете.
Теоретически, аналогичным способом можно добавить в пакет необходимые компоненты: например, файлы jar для java или особенные dll, если они используются. Они будут расположены в папке, где находятся исполняемые файлы. Эта папка общая для всех пользователей. А вот базы данных в папку пользователя так доставить не получится.

pic18.png

Рисунок 18 - Замена шаблона локальной адресной книги​
Мы не будем добавлять файл config.txt таким образом, потому что при необходимости изменить его содержание нам потребуется изменить пакет. При этом есть более простой способ сделать это.

Связка компонентов и выгрузка пакета.​

Мы сделали все необходимые тонкие настройки, но перед тем как выгрузить установочные файлы, нам необходимо осуществить связку компонентов. Для этого необходимо перейти в пункт «Direct Editor» (рисунок 19).

pic19.png

Рисунок 19 - Окно Direct Editor​
В данном разделе происходит еще более тонкая настройка будущего инсталлятора.
Для начала найдем пункт «IniFile» и запомним или запишем название его компонента (рисунок 20).

pic20.png

Рисунок 20 - Компонент IniFile​
После этого переходим в раздел «Component» (рисунок 21).

pic21.png

Рисунок 21 - Пункт Component​
В правой части окна перечислены все компоненты инсталлятора. Нам необходимо найти те, которые у нас изменились. В нашем случае это Notes.ini и pernames.ntf. Как правило, такие компоненты будут расположены внизу правой части (рисунок 22).
pic22.png

Рисунок 22 - Измененные компоненты​
Сначала находим компонент для Notes.ini и меняем ему значение в колонке «Directory_-s72» с «NOTES» на «VDIR_INI». Теперь возвращаемся в пункт «IniFile» и делаем там тоже самое: меняем значение колонки «DirProperty –S72» с «NOTES» на «VDIR_INI».
Для нашего шаблона pernames.ntf мы выставляем значение «MUIMULTIUSER_VDIR_SHARED», чтобы при запуске клиента подхватывался он.
Итак, мы закончили настройку. Теперь нам надо выгрузить файлы инсталлятора. Для этого в верхней панели инструментов мы находим и нажимаем кнопку «Packaging Wizard» (рисунок 23).

pic23.png

Рисунок 23 - Кнопка Packaging Wizard​
Откроется окно «визарда» (рисунок 24). В первом же окне нам предлагают выбрать местоположение инсталляционных файлов. Выбор из двух пунктов: некая папка в сети или на компьютере и FTP.
Выбираем первый пункт, а в пути указываем «C:\InstallPack\» .

pic24.png

Рисунок 24 - Местоположение пакета​
На втором этапе нам предлагают задать параметры для setup.exe (рисунок 25).
Выставляем все галки, которые там есть. Поле для указания аргументов мы оставляем пустым. Да, там можно будет указать дополнительные параметры, но мы будем использовать другой способ.

pic25.png

Рисунок 25 - Настройка Setup.exe​
На следующем этапе нам предлагают задать параметры для System Management Server(SMS).
В нашем случае мы пропустим данный пункт и не будем ничего тут указывать. Если в компании используется данное ПО, то можете указать параметры, которые необходимы.

pic26.png

Рисунок 26 - Настройки SMS​
На следующем шаге показывается сводная информация, и мы просто жмем «Готово»

pic27.png

Рисунок 27 - Сводная информация​
В нижней части InstallShield Tuner будет отображаться процесс формирования файлов инсталлятора.

pic28.png

Рисунок 28 - Результаты выгрузки инсталлятора​
Закрываем InstallShield Tuner.
В результате мы получили две папки:
  • Unpack – набор файлов, который мы использовали для настройки пакета;
  • InstallPack – набор файлов, которые и есть наш инсталлятор.
Нам понадобятся обе эти папки, поэтому, если у вас VM, требуется сделать снимок (например, «installer_point»). А если у вас не VM, скопируйте папку InstallPack на другую машину, где мы будем продолжать создавать уже полный инсталлятор, в следующем разделе.
А пока мы можем запустить установку из нашего инсталлятора, чтобы проверить как он работает.
Если запустить инсталлятор просто через setup.exe он будет задавать вопросы. Но мы же делали файл ответов. Почему так? Потому, что мы не указали никакие параметры для запуска setup.exe, когда выгружали файлы инсталлятора. Но мы можем это сделать из cmd.
Запускаем cmd, переходим в папку c:\installpack. Пишем (ну ок, копируем) данную команду в окно cmd:
setup.exe /s /v" SETMULTIUSER=1 TRANSFORMS=HCL_Notes_11.0.1.mst /qb"
Запустится установка клиента с применением наших ответов.
После установки можно запустить клиент и убедиться, что он запускается без ошибок.
Если есть ошибки, значит что-то пошло не так и надо разбираться… Может быть не так что-то указали в компонентах. Чтобы это исправить, нам надо заново запустить InstallShield Tuner, но вместо пункта «Create a new Transform» требуется выбрать пункт «Open an existing transform», а в правой части указать файлы: C:\unpack\HCL Notes 11.0.1.msi и C:\unpack\HCL Notes 11.0.1.mst
Потом, после внесения нужных правок, заново через «Packaging Wizard» выгрузить файлы инсталлятора.
Если всё прошло хорошо, клиент установился и запускается, переходим к следующему шагу: создание полного пакета установки.

Создание полного пакета установки​

Итак, у нас есть файлы инсталлятора для клиента с нашими настройками. Почему этот инсталлятор неполный? Потому что все, что он делает, это устанавливает клиент, а нам нужно не просто его установить.
Нам хочется еще поставит FixPack_3, и немного протюнить клиент.
Если мы запустим текущий инсталлятор, нет никаких гарантий, что при его использовании на АРМ, где уже установлен другой клиент другой редакции, не будет проблем. Еще этот инсталлятор будет запускаться в режиме отображения процесса.
Можем ли мы что-то с этим сделать? Да, можем. Для начала составим план работы будущего установщика.
Коротко этот план выглядит так:
  • Выключить клиент Notes, если он запущен
  • Удалить текущую версию клиента
  • Установить новую версию клиента
  • Установить FixPack 3
  • Скопировать файл config.txt
  • Скопировать файл jvm.properties
Если на VM еще не были скопированы нижеследующие файлы, то следует сделать это сейчас.
  • Nice Tool
  • Инсталлятор FixPack 3
  • jvm.properties с АРМ где уже установлен Notes 11.0.1 FP3
Как бы не назывались файлы, нам надо их переименовать:
  • Nice Tool -> nice.exe
  • FixPack_3 -> Notes_1101FP3_Win.exe
  • jvm.properties не переименовываем, но надо, чтобы он был указан в нижнем регистре
Зачем? Во славу Сата.. HCL, конечно же. Чтобы было проще использовать в нашем bat-файле запуска установщика.
Да, всё верно, мы будем использовать bat-файл, чтобы запустить установку всего пакета.

Создание инсталлятора c тихой установкой.​

Нам необходимо создать копию папки installpack.
Созданную копию переименовываем в installpackSilent. В данную папку копируем файлы nice.exe , Notes_1101FP3_Win.exe и jvm.properties.
Внутри папки создаем папку logs, переходим в нее и создаем файл dummy.txt. Файл может быть пустой. Нам нужно его наличие, которое гарантирует наличие папки. В данную папку мы будем писать логи установки клиента через наш инсталятор.
Теперь возвращаемся в папку installpackSilent.
Внутри папки создаем файл config.txt и открываем его на редактирование. Внутрь файла вносим следующие данные и сохраняем файл (вместо текста в <…> надо указать нормальные значения):
Код:
Username=<Шаблон для имени пользователя>
Domino.Name=<имя сервер в нотации Domino>
Domino.Address=<DNS-имя или IP адрес сервера указанного выше>
Domino.Port=TCPIP
Domino.Server=1
AdditionalServices=-1

Тут стоит сделать отступление и рассказать, что же это такое.
Это конфигурационный файл, который будет использоваться при первом запуске клиента, и его значения будут вставлены в диалог конфигурации (рисунок 29).

pic29.png

Рисунок 29 - Диалог конфигурации Клиента​

Если указать Username=%USERNAME%, то при первом запуске будет подставлено имя пользователя из ОС. В нашем случае это «admin», но такого пользователя нет в нашей тестовой среде. Следовательно, сервер не авторизует данного пользователя, а подставленный ID-файл будет не валиден. НО: если имя пользователя в Domino совпадает с именем пользователя в ОС или Active Directory, то можно так сделать.

Моя рекомендация: оставить переменную Username пустой, то есть сделать так:
Код:
Username=
Это оставит поле ввода пустым и будет требоваться ручной ввод, что в большинстве случаев не так уж и плохо. Что же касается сервера, переменные Domino.Name и Domino.Address, я рекомендую указывать вместо IP именно DNS-имя, а для Domino.Name сервер, где будет располагаться почтовый ящик пользователя. Если же почта в Notes не используется, используйте сервер, на котором происходит регистрация пользователей.

Об остальных параметрах можно найти информацию в нашем любимом интернете.
Тем не менее, можно вообще этот файл не создавать, но для этого необходимо будет из пакета, а конкретно из notes.ini, убрать строку про «ConfigFile».
Копируем в папку файл jvm.properties, который мы взяли с АРМ, на котором уже установлен Notes 11.0.1FP3. Открываем данный файл на редактирование и меняем похожие строки на эти:

INI:
vmarg.Xmx=-Xmx512m
vmarg.Xms=-Xms256m
vmarg.Xmca=-Xmca512k

Сохраняем файл.
Внутри папки создаем файл runme.txt. Вот именно в этом файле мы будем создавать магию.
Открываем файл runme.txt на редактирование в стравляем туда следующие строки:

Bash:
REM Отключаем логирование bat-файла
@echo off
REM переходим в папку откуда был запущена наш bat-файл.
REM переменная %~dp0 означает директорию, из которой был запущен файл
cd /D "%~dp0"
REM Если у нас работает клиент, надо его выключить.
REM К сожалению, мы не можем рисковать, поэтому просто снимаем задачи. Фактически, убиваем.
REM Пользователи могут потерять информацию, имейте это в виду.
REM Здесь перечислены все процессы, которые могут быть запущены клиентом. Версии 7-9.
taskkill /F /FI "IMAGENAME eq nsd.exe"
taskkill /F /FI "IMAGENAME eq notes2.exe"
taskkill /F /FI "IMAGENAME eq nlnotes.exe"
taskkill /F /FI "IMAGENAME eq notes.exe"
taskkill /F /FI "IMAGENAME eq ntaskldr.EXE"
REM Запускаем удаление текущего клиента.
REM Мы удаляем только:
REM -rp : исполняемые файлы
REM -wipe : чистим реестр
REM -qn : делаем это тихо, то есть без каких-либо окон и диалогов.
nice.exe -rp -wipe -qn
REM Теперь происходят немного странные вещи.
REM Чтобы обеспечить максимальную совместимость нового пакета, требуется удалить ВСЁ что осталось от предыдущего клиента.
REM Для этого мы удаляем папки ниже.
REM С этим действием связан отдельный риск.
REM Если клиент был SingleUser.
REM То при следующем старте клиента потребуется реконфигурация.
REM Так же пользователь потеряет все локальный реплики и локальные БД.
REM Если этот риск слишком велик, то просто надо убрать/закомментировать шесть строк ниже
rd /S /Q "C:\Program Files (x86)\IBM\Notes"
rd /S /Q "C:\Program Files (x86)\IBM\Lotus"
rd /S /Q "C:\Program Files\IBM\Notes"
rd /S /Q "C:\Program Files\IBM\Lotus"
rd /S /Q "C:\ProgramData\Lotus"
rd /S /Q "C:\ProgramData\IBM\Notes"
REM Запускаем нашу установку.
REM При этом мы указываем файл ответа, что это режим MultiUser
REM Что ход установки надо писать в файл logs\LN11install.log
REM И всё это мы делаем без каких либо окон и диалогов: /qn
setup.exe /s /v"SETMULTIUSER=1 TRANSFORMS=HCL_Notes_11.0.1.mst /qn /l*v logs\LN11install.log"
REM Вот тут, если произошла ошибка мы прерываем работу пакета
If ErrorLevel 1 Goto END
REM Теперь мы запускаем установку FP3
REM Опять же, без лишних окон и диалогов: /qn
REM НО вот задать путь логирования мы не можем.
Notes_1101FP3_Win.exe -s -a /s /v"METHOD=INSTALL /qn"
REM Вот тут, еще раз, если произошла ошибка мы прерываем работу пакета
If ErrorLevel 1 Goto END
REM Копируем наш файл Config.txt, который будет использоваться для подключения
REM в папку, которая доступна всем пользователям и является неким аналогом "шаблона"
copy config.txt %ProgramData%\HCL\Notes\Data\config.txt
REM теперь удаляем файл jvm.properties
del /Q "C:\Program Files (x86)\HCL\Notes\framework\rcp\deploy\jvm.properties"
REM Чтобы заменить его на нашу целевую версию.
copy jvm.properties "C:\Program Files (x86)\HCL\Notes\framework\rcp\deploy\jvm.properties"
REM Ну и всё, выходим из пакета.
:END

Сохраняем наш файл runme.txt и переименовываем его в runme.bat.

На текущий момент мы можем остановиться и использовать папку installpackSilent для установки клиента. Все, что нам требуется, это запустить файл runme.bat с правами Администратора на целевом АРМ.
Мы даже можем расположить папку в сети и настроить её копирование, а потом запуск файла, но это не очень удобно. Поэтому пойдем дальше: упакуем нашу папку в self-exe архив.

Я буду использовать winrar для этого процесса. Мне стоит упомянуть, что для данного действия должен быть установлен WinRar? (=
Итак, выходим из нашей папки на уровень выше и через правую кнопку мыши выбираем пункт «Добавить в архив…».

pic30.png

Рисунок 30 - Добавление папки в архив​

Далее сразу выставляем галку «Создать SFX-архив».

pic31.png

Рисунок 31 - Настройки архива​

Теперь переходим на вкладку «Дополнительно» и нажимаем кнопку «Параметры SFX…».

pic32.png

Рисунок 32 - Дополнительные настройки архива​

В новом окне выставляем путь для разархивирования пакета и ставим галку «Сохранять и восстанавливать пути».

В путь для установки указываем %temp%. В данную директорию мы точно можем делать запись. Путь можно изменить, но надо быть уверенным, что в ту директорию будут права на запись, а в temp мы права на запись имеем всегда.

pic33.png

Рисунок 33 - Настройки SFX​

Теперь переходим на вкладку «Установка» и задаем параметры запуска, которые будут выполнены сразу после распаковки архива, а именно %temp%\installpackSilent\runme.bat.

pic34.png

Рисунок 34 - Настройка SFX.Установка​

Теперь переходим на вкладку «Режимы» и выставляем «Режим вывода информации» пункт «Скрывать все».

pic35.png

Рисунок 35 - Настройка SFX.Режимы​

Переходим на вкладку «Дополнительно» и ставим галку про запрос прав администратора.

pic36.png

Рисунок 36 - Настройка SFX.Дополнительно​

Переходим на закладку «Обновление» и выставляем замену без запроса.

pic37.png

Рисунок 37 - Настройка SFX.Обновление​

Теперь мы наконец можем нажать кнопку ОК. А по возвращению в основной диалог архиватора еще раз ОК. И начнется процесс архивирования.

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

А теперь давайте создадим пакет для Citrix, это будет забавно.

Создание пакета для Citrix​

Итак, самая простая часть.
Создаем копию папки installpackSilent и после копирования переименовываем ее в installpackCitrix.
Открываем файл jvm.properties на редактирование. Нам нужно изменить несколько строк:

INI:
vmarg.Xmx=-Xmx512m
vmarg.Xms=-Xms256m
vmarg.Xmca=-Xmca512k
vmarg.Dshare=-Xshareclasses:name=xpdplat_.jvm,controlDir=${prop.jvm.shareclasses.loc},groupAccess,keep,nonfatal
jvm.shareclasses.loc=C:/ProgramData/HCL/Notes/Data/SharedClasses

Далее заходим в папку installpackCitrix, открываем файл runme.bat на редактирование и меняем его, вот так:

Bash:
REM Отключаем логирование bat-файла
@echo off
REM Переходим в папку, откуда был запущена наш bat-файл.
REM Переменная %~dp0 означает директорию, из которой был запущен файл
cd /D "%~dp0"
REM Запускаем удаление текущего клиента.
REM Мы удаляем только:
REM -rp : исполняемые файлы
REM -wipe : чистим реестр
REM -qb : показываем процесс удаления.
nice.exe -rp -wipe -qb
REM Теперь происходят немного странные вещи.
REM Чтобы обеспечить максимальную совместимость нового пакета, требуется удалить ВСЁ что осталось от предыдущего клиента.
REM Для этого мы удаляем папки ниже.
rd /S /Q "C:\Program Files (x86)\IBM\Notes"
rd /S /Q "C:\Program Files (x86)\IBM\Lotus"
rd /S /Q "C:\Program Files\IBM\Notes"
rd /S /Q "C:\Program Files\IBM\Lotus"
rd /S /Q "C:\ProgramData\Lotus"
rd /S /Q "C:\ProgramData\IBM\Notes"
rd /S /Q "C:\ProgramData\HCL\Notes"
REM Запускаем нашу установку.
REM При этом мы указываем файл ответа, что это режим MultiUser
REM Что ход установки надо писать в файл logs\LN11install.log
REM И всё это мы делаем c показом прогресса и скрытием кнопки Отмена: /qb!
setup.exe /s /v"SETMULTIUSER=1 CITRIX=1 TRANSFORMS=HCL_Notes_11.0.1.mst /qb! /l*v logs\LN11install.log"
REM Вот тут, если произошла ошибка мы прерываем работу пакета
If ErrorLevel 1 Goto END
REM Теперь мы запускаем установку FP3
REM Опять же, показывая прогресс, без кнопки Отмена и вывод в конце сообщения об окончании установки: /qb+!
REM НО вот задать путь логирования мы не можем.
Notes_1101FP3_Win.exe -s -a /s /v"METHOD=INSTALL /qb+!"
REM Вот тут, еще раз, если произошла ошибка мы прерываем работу пакета
If ErrorLevel 1 Goto END
REM Копируем наш файл Config.txt, который будет использоваться для подключения
REM в папку, которая доступна всем пользователям и является неким аналогом "шаблона"
copy config.txt %ProgramData%\HCL\Notes\Data\config.txt
REM Создаем папку SharedClasses
mkdir %ProgramData%\HCL\Notes\Data\SharedClasses
REM теперь удаляем файл jvm.properties
del /Q "C:\Program Files (x86)\HCL\Notes\framework\rcp\deploy\jvm.properties"
REM Чтобы заменить его на нашу целевую версию.
copy jvm.properties "C:\Program Files (x86)\HCL\Notes\framework\rcp\deploy\jvm.properties"
REM Ну и всё, выходим из пакета.
:END

Теперь проделываем тот же фокус с архивом, который мы делали для пакета с тихой установкой.
Когда все это сделали нам надо принять один момент:
Установка клиента в Citrix среде должна происходить через образ. То есть Администратор Citrix запускает наш установочный архив в образе.​
Далее, после установки, если он была успешной, необходимо:
  • Дать полный доступ учетной записи «Все» или «Everyone» в папку C:/ProgramData/HCL/Notes/Data/SharedClasses
  • Так же дать полный доступ учетной записи «Все» или «Everyone» в символическую ссылку C:/ProgramData/IBM/Notes
  • Данная папка создается для обратной совместимости с предыдущими версиями клиентов
На этом всё, мы создали все целевые пакеты для установки.

Известные проблемы и ограничения​

Самое важное ограничение: нельзя сделать откат. То есть, если ошибка произошла между удалением клиента и его установкой, то всё. Клиента нет и надо устанавливать вручную. Если возможность отката необходима, этот момент требуется решить заранее.

Итак, не все происходит гладко, поэтому надо решать проблемы.
  1. Самая частая ошибка, которая возможна - это невозможность установить FixPack. Для этого просто переходим в папку D:\Program Files (x86)\HCL\Notes и удаляем папку jvm. Затем ставим FP отдельно вручную.
  2. Иногда может не начаться установка самого клиента, еще до FP. Как правило, проблема кроется в ОС. В моем опыте было сломано хранилище компонентов, там даже обновления не могли поставить.
  3. Нехватка места на ЖД на целевой машине.
  4. Если клиент был SingleUser, а мы ставим MultiUser, клиент при запуске потребует реконфигурацию. Если, конечно, мы не перенесли профиль ранее.
  5. Если мы используем Citrix, у возникают отдельные сложности.
    1. Если используется Citrix profile manager, надо исключить из переноса папки:
      • AppData\Local\HCL\Notes\Data\IBM_TECHNICAL_SUPPORT
      • AppData\Local\HCL\Notes\Data\workspace
    2. Или же мы можем всегда запускать Notes с параметрами 'notes.exe -RPARAMS -resetconfig -clean'
Логирование установки можно найти в файлах на целевом АРМ:
Код:
%temp%\installpackSilent\logs\LN11install.txt
%temp%\notesfixinstall.txt
%userprofile%\Documents\HCLNotesInstall.txt
Как правило, в логах можно будет найти причины ошибок установок и проблем.

Дополнительно​

Перед тем как приступать к созданию инсталлятора надо собрать максимум полезной информации о текущем положении вещей. И в этом действительно нет лучшего средства чем panagenda marvel client. Бесплатной версии вполне достаточно, всю необходимую информацию можно будет собрать в течении нескольких недель/дней.
Мой личный совет: отложить начало работ по созданию пакета, пока вы не соберете эту информацию. В моём опыте мы нашли пользователей, у которых было недостаточно RAM и старая ОС.

Обязательно протестируйте новую версию клиента со всеми приложениями, которые используются. И сделать это надо до принятия решения о переходе на выбранную версию.
Соберите известные проблемы той версии, которую планируете устанавливать. Главное узнать способы их решения, либо сроки этих решений. Возможно из-за наличия ошибок стоит выбрать другую версию, либо отложить процесс до их исправления.

К сожалению, нельзя сделать автоматическую установку/обновление клиентов через Tuner для MacOS.

В документации HCL указано, что «InstallShield Tuner for Notes» можно скачать с портала FlexNet, но это не так.
Его нет на портале и судя по всему IBM не передала данное ПО. Поэтому остается только искать в интернете.
Его добавили в пак 11.0.1 + Можно попробовать обратиться в поддержку, но мы не пробовали.

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

Конечный пакет можно ставить как на x64, так и на x86. Однако необходимо изменить последние шаги, где мы копируем новые файлы, так как пути другие. Это единственное, что требует правки. Сам пакет пересобирать не требуется. Если же мы ставим клиент в другие папки, которые не имеют различия x86/x64, то править не нужно будет совсем ничего.

Существует возможность мигрировать пользователей с редакцией SingleUser на MultiUser: для этого требуется перед удалением клиента, но после его закрытия, запустить специальный vbs скрипт, который перенесет всю папку Data пользователя в нужное место. Подробнее можно почитать здесь: . Сам скрипт лежит в файлах установщика в папке Utility в архиве «NotesCustomizationKit_1_0.zip». Лично мы этого не стали делать, но если миграция необходима, то вот вариант как это сделать.

Для редакции Basic нужно делать свой пакет, так как там свой установочный клиент и свои FixPack’и. Тем не менее я не считаю нужным создавать отдельный пакет для Basic. Standard всегда можно запустить в basic режиме, как через ярлык, так и через настройку в notes.ini. К тому же нам не надо будет поддерживать актуальность двух пакетов.

Не надо устанавливать HotFix’ы или InternalFix’ы в пакете, потому что при попытке потом установить другой пакет обновления, нужно будет сначала удалить HF/IF. Можно, конечно, целиком переустановить клиент, но лучше просто этого не делать. Если для версии есть HF/IF, но еще нет FP, лучше дождаться появления FP и только тогда переходить на данную версию. Стоит так же обратить внимание, а нужен ли данный HF/IF?

С помощью данного руководства можно создавать так же пакеты для Designer/Admin, требуется только другой файл ITW для InstallShield.

Если требуется заменить FixPack на другую версию, то это делается достаточно просто: заменяем в архиве инсталлятор для FP, и меняем строку запуска в runme.bat.

Если сменились серверы и теперь надо пользователей вести на другой при конфигурации клиента, то аналогично просто меняем файл config.txt для будущих установок. Да, для текущих установок это не поможет, но там файл хранится в одном строго заданном месте. Думаю, на powershell можно будет написать скрипт, который поправит пару строк.

С помощью файла config.txt можно указать не только параметры для подключения, а еще очень много всего. Подробнее об этом тут:

Почему вообще надо создавать пакет таким способом, а не использовать тот же Marvel Client Upgrade? Как обычно причина в деньгах: не все хотят платить, если есть возможно сделать иначе. Отдельно про MC могу сказать, что можно попробовать обновиться и на бесплатной версии до 10.0.1FP2, а потом уже воспользоваться средствами HCL AUT, который появился с 10-й версией. У MC очень подробная инструкция, как можно сделать обновление клиента. Рекомендую почитать и самостоятельно оценить сложность или легкость создания пакета инсталляции с помощью MC.

Не жалейте времени и сил на тестирование. Если собрали статистику, сделайте тестовую VM на каждый возможный случай. Нет, я не призываю делать 3000 VM, просто соберите по категориям: Клиент, редакция, ОС, технические характеристики и так далее.

Никогда не тестируйте конечный пакет только под пользователем с правами Администратора, для начала это можно делать. А вот конечный пакет надо проверять и под пользователем, который не имеет прав.

Если планируете доставлять установочный пакет до АРМ пользователя с помощью политик или другого ПО, то у вас появляется еще одна цепочка возможных ошибок: само ПО и люди, которые за него отвечают. Не верьте им, никогда. Чтобы они не говорили, как бы не убеждали – не верьте. Сразу обговаривайте как можно найти проблемы при доставке пакета и его запуска. Где логируется процесс, какие ограничения ПО существуют. Почему? Ну вот пример из личного опыта: на целевом АРМ не был установлено ПО для установки, доставить его туда автоматически нет возможности, доступа к АРМ пользователя физически нет (март 2021, режим удаленной работы и всё такое). Связались с пользователем, чтобы привез ноутбук в офис, там ему вручную обновили клиент. Еще один пример: на целевом АРМ не хватило место для установочного пакета. Почему не увидели в статистике? Оказалось, что ПО скачивает пакет в определённую папку, а эта папка была на другом диске, где не было места. Вот такие дела…

Не производите обновление клиента перед понедельником и перед выходными, особенно автоматически. Технические специалисты, которые будут потом решать отдельные проблемы с установкой скажут вам спасибо, если так сделаете. Пользователи тоже скажу спасибо. Оптимальные дни обновления вторник, среда и четверг. Никто не любит понедельники.

Будьте готовы к тому, что пользователи будут жаловаться после установки новой версии. Чаще всего жалобы на внешний вид, который поменялся. Такие всегда есть. Мы либо игнорировали отдельные жалобы, либо советовали сменить тему, кого-то просто переключили в basic режим. Просто будьте к этому готовы.

Параметры запуска инсталлятора​

Некоторые из этих параметров можно не использовать, если мы задаем файл ответов и настраиваем пакет установки через InstallShield

TRANSFORMS=file.mstУказывается, если есть файл ответов MST. Как правило, он находится в той же папке, где и setup.exe
SETMULTIUSER=1Указывается, если мы хотим установить для всех пользователей данного АРМ
CITRIX=1Указывается, если мы производим установку на Citrix
MULTIUSERCOMMONDIRУказывается, если мы хотим сменить Shared директорию пользователей. По умолчанию она будет %ProgramData%\HCL\Notes\Data\Shared
MULTIUSERBASEDIRУказывается, если мы хотим сменить папку где будет находиться папка Data пользователя. По умолчанию это %Userprofile%\AppData\Local\HCL\Notes\Data
PROGDIRУказывается, если мы хотим установить клиент в другую директорию
DATADIRУказывается, если мы хотим изменить местоположение папки Data

Параметры запуска клиента​

C:\Notes\Notes.exe =C:\Notes\MyNotes.iniStarts the client with an alternate INI file
C:\Notes\Notes.exe dbName.nsfOpens a specified local database when the client is started
C:\Notes\Notes.exe
server!!dbName.nsf
Opens a specified database on a specified server when the client is started
C:\Notes\Notes.exe doclink.ndlOpens a specified doclink when the client is started
C:\Notes\Notes.exe Opens a specified web page when the client is started
C:\Notes\Notes.exe notes://...Opens a specified database, view, form, or document using its Notes URL when the client is started (*)
C:\Notes\Notes.exe mailto:you@something.comBegins composing an e-mail to the specified address with the Notes mail client
C:\Notes\Notes.exe MAILOpens the default mail database on the Notes client
C:\Notes\Notes.exe ADMINONLYStarts the Notes Admin client (R5+)
C:\Notes\Notes.exe /DESIGNStarts the Notes Designer client (R5+)
C:\Notes\Notes.exe /DEBUGGERStarts the Notes Remote Agent Debugger (R6+)
C:\Notes\Notes.exe /EMBEDDINGStarts Notes as an OLE server
C:\Notes\Notes.exe /AUTOMATIONStarts Notes minimized

P.s. Так же текст данной статьи добавлен в виде PDF.
 

Вложения

  • Создание_пакета_установки_codeby.pdf
    2,7 МБ · Просмотры: 214
  • add_info_1.zip
    8,9 МБ · Просмотры: 157
  • add_info_2.zip
    5,9 МБ · Просмотры: 188
Последнее редактирование модератором:

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
В блоке "Создания пакета для Citrix" , в runme добавлена строка :
Bash:
 rd /S /Q "C:\ProgramData\HCL\Notes"
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!