by darkhunter
DESCRIPTION
hm,vhTRANSCRIPT
![Page 1: By DarkHunter](https://reader036.vdocuments.net/reader036/viewer/2022082614/5695d2ca1a28ab9b029bb98e/html5/thumbnails/1.jpg)
By DarkHunterСпособ 1: (никаких платных программ не используется)
Нам понадобится: RegShot, InnoSetup5 (можно генераторы скриптов для Inno), AutoIt3
Шаг 1:Делаем снимок реестра до установки программой RegShot. Не закрываем её!
Шаг 2:Устанавливаем необходимую программу, настраиваем её.Делаем снимок реестра после установки и сравниваем изменившиеся значения реестраОткрываем Inno Setup или генератор скриптов (в моем случае я для примера использую Inno Script Generator)Переходим к секции "Registry"Правая кнопка мыши - Add a RowИ вписываем изменившееся значения, которое мы увидели после сравнения RegShot'ом (для каждого значения необходимо снова нажать "Add a Row"!)Будьте внимательны тк не все изменившиеся значения относятся к программе! Например значения реестра, которые не относятся к установке программы: все что в названии имеет MuiCache, Cache, cookies и тд.
Шаг3:С реестром разобрались, а теперь файлы... Будьте предельно внимательны!Переходим в Inno Script Generator к секции "Files and Dirs"Правая кнопка мыши и снова "Add a row"Дальше обьясню на примере 1:У нас установленна программа в папку C:\Program Files\test for trackerВ папке test for nnm-club находятся все файлы программыДопустим имеется файл C:\Program Files\test for tracker\test.txtНаши действия:В Inno Script Generator после нажатия "add a Row" в поле Source выбираем C:\Program Files\test for tracker\test.txtВ поле DestName пишем test.txt Вместе с исходным расширением файла!Папка задана константой {app} Все правильно!Пример 2:Если существует SubfolderРассмотрим другой случай: наш файл находится по пути C:\Program Files\test for tracker\Dark\test.txtВ таком случае повторяем вышеописанные действия, но только в поле Subfolder пишем имя нашей папки (в нашем случае Dark) ^)Эти действия необходимо повторить для всех файлов в папке с установленной программой.Но как же быть? Ведь файлы программы располагаются не только в своей папке!Файлы могут располагаться в системной папке, в system32, SysWow64, appData.Необходимо учесть все эти нюансы.Для добавления файлов из таких папок необходимо использовать принцип описанный выше, но уже в качестве "Destination: - Root" использовать другую константу. (для Program Files - {pf}; для Application Data - {appdata} и тдскрытый текстГлавную роль в скрипте играют константы. Константы всегда заключаются к фигурные скобки { }. Инсталлятор (или Деинсталлятор) присваивает константам значения, присвоенные пользователем, либо опираясь на конфигурацию системы. Например, константа {win} будет воспринята компилятором как "C:\WINDOWS", если система была установлена в эту папку.
Символ { будет воспринят как начало константы. Если требуется ввести "{", наберите ее два раза.
Если за константой следует бэкслеш ("\"), инсталлятор автоматически его сотрет, если константа уже оканчивается на бэкслеш. Например, если константа {const} имеет значение "C:\", а мы введем {const}\filensme, на выходе получится "C:\filename", а не "C:\\filename", как должно быть по логике. Если требуется вывести именно "C:\\filename", бэкслеш придется внести отдельно вот так: {const} {\}\filename.
Далее следует список поддерживаемых констант.
Константы папок.
{app}
Папка, куда устанавливается приложение. Она выбирается пользователем в окне Выбор папки назначения при установке.
Например: если Вы ввели {app}\MYPROG.EXE в значение параметра Source и пользователь пожелал установить Вашу программу в "C:\MYPROG", на выходе получится "C:\MYPROG\MYPROG.EXE".
{win}
![Page 2: By DarkHunter](https://reader036.vdocuments.net/reader036/viewer/2022082614/5695d2ca1a28ab9b029bb98e/html5/thumbnails/2.jpg)
Папка, в которую установлена Windows. Например: ввели "{win}\MYPROG.INI", папка Windows "C:\WINDOWS", на выходе "C:\WINDOWS\MYPROG.INI".
{sys}
Системная папка Windows (System32 на Windows NT).
Например: ввели "{sys}\CTL3D32.DLL" системная папка Windows "C:\WINDOWS\SYSTEM", на выходе "C:\WINDOWS\SYSTEM\CTL3D32.DLL".
{src}
Папка, из которой запущен инсталлятор.
Например: ввели "{src}\MYPROG.EXE", инсталлятор запущен из "S:\", на выходе "S:\MYPROG.EXE".
{sd}
Системный диск. Диск, на котором установлена Windows. Обычно это "C:".
{pf}
Program Files. Путь к файлам программ (самая нужная константа). По умолчанию "C:\Program Files".
{cf}
Общие файлы Common Files. По умолчанию "C:\Program Files\Common Files".
{tmp}
Временная папка. Папка, где созданы временные файлы инсталлятора ("C:\WINDOWS\TEMP\IS-xxxxx.tmp"). Все файлы и папки удаляются из папки Temp после завершения установки приложения. Эта константа используется в случае, если в секции [Run] указаны файлы, необходимые при инсталляции, но не нужные для дальнейшей работы приложения.
{fonts}
Папка шрифтов. Обычно имекнуется FONTS и находится в папке Windows.
{dao}
Папка DAO. Эквивалентна папке {cf}\Microsoft Shared\DAO.
Константы специальных папок.
В Inno Setup используются и другие константы, именуемые Константами специальных папок. Используются они так же, как и константы папок.
Константы "user" берутся из профиля текущего пользователя, а константы "common" являются общими для профилей всех пользователей.
Как уже говорилось, константы специальных папок применимы ко всем версиям Windows, поддерживающих Inno Setup, включая Windows 95 и NT 4.0.
Константа "common" равна константе "user", если пользователь, устанавливающий приложение, является администратором, либо когда приложение устанавливается на компьютер с операционной системой Windows 95/98/Me.
{group}
![Page 3: By DarkHunter](https://reader036.vdocuments.net/reader036/viewer/2022082614/5695d2ca1a28ab9b029bb98e/html5/thumbnails/3.jpg)
Путь к группе меню Пуск, который пользователь может изменить на странице Выбор папки меню Пуск. В Windows NT/2000/XP эта папка всегда создается для профилей всех пользователей, если только пользователь, устанавливающий приложение, не имеет прав администратора - в этом случае путь задается только для профиля текущего пользователя.
{localappdata}
Путь к локальной папке приложения.
{sendto}
Путь к папке Send To (общей папки Send To нет).
{userappdata} & {commonappdata}
Путь к папке с данными приложения (Application Data).
{userdesktop} & {commondesktop} *
Путь к папке рабочего стола. Лучше пользоваться {userdesktop}
{userdocs} & {commondocs}
Путь к папке Мои документы (на Windows NT 4.0 это папка Personal folder).
{userfavorites} & {commonfavorites} *
Путь к папке Избранное. Для использования включите MinVersion не меньше "4.1, 4". Только Windows 2000, Me, и позднее поддерживают {commonfavorites}; на других Windows {commonfavorites} = {userfavorites}.
{userprograms} & {commonprograms} *
Путь к папке Программы меню Пуск.
{userstartmenu} & {commonstartmenu} *
Путь к "корню" меню Пуск.
{userstartup} & {commonstartup} *
Путь к папке Автозагрузка меню Пуск.
{usertemplates} & {commontemplates} *
Путь к папке шаблонов. Только Windows 2000, Me, и позже поддерживают {commontemplates}; на других Windows, {commontemplates} = {usertemplates}.
Прочие константы.
{\}
Бэкслеш. Прочитайте в начале этой странице о правилах использования {\} и \.
{%NAME|DefaultValue}
Вставляет значение переменной среды.
·NAME - имя переменной среды
·DefaultValue - определяет текст, который будет вставлен в случае, если константа не существует
![Page 4: By DarkHunter](https://reader036.vdocuments.net/reader036/viewer/2022082614/5695d2ca1a28ab9b029bb98e/html5/thumbnails/4.jpg)
·Для вставки запятой, вертикальной черты "|", или закрывающей фигурной скобки "}" поставьте перед ней "%-код_символа.". Например.запятая - это "%2c", вертикальная черта - "%7c", "}" - "%7d". "%" = "%25".
·NAME и DefaultValue могут содержать константы.
Обратите внимание, что описанным выше способом закрывающая фигурная скобка задается только в случае, когда она используется сама по себе. Если же она обозначает константу, подобные изощрения не нужны.
Например:
{%COMSPEC}
{%PROMPT|$P$G}
{cmd}
Полный путь к стандартному системному интерпретатору. На NT/2000/XP, это обычно Windows\System32\cmd.exe. На Windows 9x/Me - Windows\COMMAND.COM. При этом COMSPEC не используется.
{computername}
Имя компьютера, на котором запущен инсталлятор или деинсталлятор (результат функции GetComputerName).
{drive:Path}
Возвращает букву диска и двоеточие из указанного пути (например, "C:"). В случае установки через сеть возвращает имя сервера и имя общего документа (например, "\\SERVER\SHARE").
·Path - путь
· Для вставки запятой, "|", или "}" поставьте перед ней "%-код_символа.". Например.запятая - это "%2c", вертикальная черта - "%7c", "}" - "%7d". "%" = "%25".
·Путь может включать константы.
Примеры:
{drive:{src}}
{drive:c:\path\file}
{drive:\\server\share\path\file}
{groupname}
Имя папки, которую пользователь выбрал на странице Выбор папки меню Пуск. В отличие от константы {group} эта константа равна имени нижней папки, а не полному пути к ней.
{hwnd}
Дескриптор фонового окна инсталлятора.
{wizardhwnd}
Дескриптор окна мастера инсталлятора. Равен '0', если на момент обращения не существует.
{ini:Filename,Section,Key|DefaultValue}
Берёт значение из INI файла.
·Filename - имя ini-файла, из которого производится чтение
![Page 5: By DarkHunter](https://reader036.vdocuments.net/reader036/viewer/2022082614/5695d2ca1a28ab9b029bb98e/html5/thumbnails/5.jpg)
·Section - имя секции
·Key - имя ключа
·DefaultValue - значение, возвращаемое, если параметр не существует
·Если вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая равна "%2c", "|" - "%7c", и "}" - "%7d". Если вы хотите вставить "%", введите "%25".
·Filename, Section, и Key могут включать константы.
Например:
{ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program}
{language}
Встроенное имя выбранного языка. Для справки обратитесь к Секция [Languages].
{cm:MessageName}
{cm:MessageName,Arguments}
Возвращает стандартное сообщение на заданном языке
·MessageName - имя стандартного сообщения, из которого производится считывание. Для справки обратитесь к Секция [CustomMessages]
·Arguments - аргументы сообщения, разделенные запятыми
·Если вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая равна "%2c", "|" - "%7c", и "}" - "%7d". Если вы хотите вставить "%", введите "%25".
Каждый аргумент в Arguments может включать константы.
Например:
{cm:LaunchProgram,Inno Setup}
Пример выдает "Launch Inno Setup" , если выбран английский язык.
{reg:HKxx\SubkeyName,ValueName|DefaultValue}
Взвращает значение реестра.
·HKxx - ключ. Для справки обратитесь к Секция [Registry]
·SubkeyName - имя раздела
·ValueName - имя параметра. Пустой параметр = "По умолчанию".
·DefaultValue - значение, возвращаемое, если параметр не существует или не строкового типа (REG_SZ или REG_EXPAND_SZ)
·Если вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая равна "%2c", "|" - "%7c", и "}" - "%7d". Если вы хотите вставить "%", введите "%25".
·SubkeyName, ValueName, и DefaultValue могут содержать константы.
Например:
![Page 6: By DarkHunter](https://reader036.vdocuments.net/reader036/viewer/2022082614/5695d2ca1a28ab9b029bb98e/html5/thumbnails/6.jpg)
{reg:HKLM\Software\My Program,Path|{pf}\My Program}
{param:ParamName|DefaultValue}
Возвращает параметры командной строки.
·ParamName - имя параметра
·DefaultValue - значение, возврашаемое если запрашиваемое значение не существует.
·Если Вы хотите вставить ",", "|", или "}" в константу, Вы должны ввести "%-шестнадцатиричный номер символа в кодировке". Например, запятая "%2c", "|" = "%7c", и "}" = "%7d". Если Вы хотите вставить "%", введите "%25"
·ParamName и DefaultValue могут содержать константы.
Например:
{param:Path|{pf}\My Program}
Возвращает c:\My Program если командная строка "/Path=c:\My Program".
{srcexe}
Полное имя инсталлятора, например "C:\SETUP.EXE".
{sysuserinfoname}
{sysuserinfoorg}
Имя организации. Эта информация берется из реестра.
{uninstallexe}
Полное имя деинсталлятора, например "C:\Program Files\My Program\unins000.exe". Эта константа чаще всего используется в секции [Icons] для задания иконки деинсталлятора. Действует, если параметру Uninstallable присвоено значение yes (по умолчанию).
{userinfoname}
{userinfoorg}
{userinfoserial}
Имя, организация и серийный номер, которые пользователь указал на странице Информация о пользователе (эту страницу можно активировать директивой UserInfoPage ). Обычно эти константы используются в секциях [Ini] и [Registry], чтобы сохранить их значения для дальнейшего использования.
{username}
Имя пользователя, запустившего инсталлятор или деинсталлятор (результат функции GetUserName).
Шаг 4:Настройки нашей программы:Переходим в секцию "Setup"Тут ,я думаю, в комментариях не нуждается. Выбираем имя программы,версию, степень сжатия и многое другое.Компиллируем наш скрипт нажатием Ctrl+F9Наша программа находится в C:\Users\<Имя Юзера>\Documents\Inno Setup Examples Output
Шаг 5: Заключительный! (как альтернативу можно использовать SFX архив)
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC.
![Page 7: By DarkHunter](https://reader036.vdocuments.net/reader036/viewer/2022082614/5695d2ca1a28ab9b029bb98e/html5/thumbnails/7.jpg)
Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows).Для выполнения этой сложной задачи предоставляется комбинация испытанных методов,
включающих в себя - симуляцию нажатий комбинаций клавиш клавиатуры,перемещения указателя мыши и управления окнами и его визуальными элементами.
Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях,когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
По замыслу AutoIt предполагался быть средством "тиражирования конфигураций" ПК.Но с момента создания третьей версии его возможности могут быть
использованы для реализации "кухни" автоматизации -написания сценариев решения различных задач, в том числе и для администрирования системы.
Скачиваем полный пакет и запускаем SciTE Script EditorДля полного осознания всех операции требуется прочитать справку по этому языку Пишем:
;предотвращение повторного запуска скриптаIf WinExists(@ScriptName) Then ExitAutoItWinSetTitle(@ScriptName)
; включение нашего инсталлятора в один файл со скриптоми извлечекние его перед использованиемFileInstall("C:\Users\<Имя Юзера>\Documents\Inno Setup Examples Output\setup.exe (имя может быть другое в зависимости от имени файла, который вы создали на предыдущих шагах) ", "C:\Windows\Temp\<вашеимядля файла>.exe")
;запуск нашего инсталлятора в тихом режиме и ожидание завершенияRunWait('C:\Windows\Temp\<вашеимядля файла>.exe /<параметр командной строки>')Параметры командной строки (ключи автоустановки)параметры коммандной строкинам необходимы /VERYSILENT ИЛИ /SILENT
Ниже дописываем ExitИтого наш скрипт имеет вид:
;предотвращение повторного запуска скриптаIf WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
; включение нашего инсталлятора в один файл со скриптоми извлечекние его перед использованиемFileInstall("C:\Users\<Имя Юзера>\Documents\Inno Setup Examples Output\setup.exe
(имя может быть другое взависимости от имени файла, который вы создали на предыдущих шагах) ",
"C:\Windows\Temp\<вашеимядля файла>.exe")
;запуск нашего инсталлятора в тихом режиме и ожидание завершенияRunWait('C:\Windows\Temp\<вашеимядля файла>.exe /VERYSILENT')
Sleep(80)
;удаляем временный файлFileDelete("C:\Windows\Temp\<вашеимядля файла>.exe")
Осталось только запустить программу "Compile Script to .exe" и сформировать exe файл.Иконка скрипта будет отображаться в трее и можно будет увидеть выполнил ли он свою работу (и выключился) или что-то мешает работе (останется долго всеть в трее - значит наш инсталлятор не отрабатывает операцию)