Исполняемые файлы Windows (или, более конкретно, файлы Win32 PE) часто содержат небольшую базу данных ресурсов: графические файлы, текстовые строки, значки и другие программные атрибуты. Часто может оказаться полезным изменить эти ресурсы, например, изменить внешний вид программы или исправить неправильный перевод в таблице строк. Anolis Resourcer предназначена для изменения ресурсов исполняемых файлов.
Способ первый: традиционная распаковка
Традиционная распаковка не требует установленных в системе вспомогательных программ. Все, что нужно, — уже предустановлено в Windows.
Итак, процесс распаковки EXE-файла следующий:
- Откройте файловый менеджер «Проводник».
- Перейдите в папку, в которой находится файл с расширением EXE.
- Запустите его. Для этого достаточно дважды кликнуть по его иконке левой кнопкой мыши. Иногда для запуска требуются права администратора — в этом случае вам необходимо сначала нажать правую кнопку мыши, а потом выбрать соответствующий пункт из меню.
- Запустится окно инсталлятора. Именно в нем вам необходимо будет задать параметры распаковки.
- В первом окне вам предложат выбрать язык установщика.
- Затем появится приветственное окно. В нем обычно указано, что именно за программа будет установлена в систему.
- Далее надо будет принять пользовательское соглашение.
- Потом выбрать папку, в которую будут распакованы все файлы.
- После этого вам предложат создать дополнительные ярлыки в меню «Пуск» и на рабочем столе.
- После этого этапа начнется распаковка всех файлов установщика.
Вам остается лишь дождаться завершения этого процесса, после чего можно будет закрывать окно Мастера установок. Вот так просто можно распаковывать EXE-файлы программы.
Какие файлы не имеет смысла открывать в редакторе ресурсов
Не смотря на то, что Resource Tuner предназначен для открытия и редактирования любых 32-/64-битных исполняемых файлов, существуют некоторые виды EXE файлов, в которых ресурсы практически отсутствуют.
1. Файлы, созданные при помощи Visual Basic.
В таких файлах в секции ресурсов ничего нет, кроме иконы и информации о версии. Строчки и диалоги в программах, написанных на визуальном бейсике, хранятся в своём собственном закрытом формате, и стандартная секция ресурсов в них не используется.
2. Файлы .EXE размером в гигабайт и более.
Поскольку Resource Tuner — это 32-битная программа, существуют естественные ограничения для размещения образа открываемого файла в виртуальной памяти в пределах первого гигабайта. Файл размером в гигабайт и более туда просто не поместится.
3. Самораспаковывающиеся архивы в виде EXE файлов.
В таких файлах в ресурсах ничего нет, кроме иконы и информации о версии, а может и этого не быть. По сути, это архивированные данные, снабжённые подпрограммой для распаковки.
4. Инсталляторы других программ.
В таких файлах в ресурсах ничего нет, кроме иконы и информации о версии. Очень похожи на п.3. Файл инсталлятора можно рассматривать как контейнер, внутри которого содержится другой .EXE файл в сжатом виде и подпрограмма для его извлечения. К тому же, программы для создания инсталляторов используют разные алгоритмы для хранения внутри себя архивированных данных.
Resource Tuner работает на всех версиях Windows
от 2000 и XP до 8 и 10.
Минимальные системные требования:
Процессор Intel Pentium® или AMD K5 166 MHz 16 MB RAM
Copyright © 2020 Heaventools Software. Все права сохранены.
Динамически подключаемая библиотека или DLL выполняет роль своеобразного исполняемого файла, который многократно используется различными приложениями для осуществления действий. Такое решение позволяет экономить дисковое пространство в несколько раз, а также происходит эффективная организация памяти. Из этого выходит, что на компьютере каждого пользователя хранится множество DLL-объектов, которые можно открыть и не только просмотреть, но и отредактировать.
Способ второй: извлечение установочных файлов
Второй метод кардинально отличается от первого. Если в первом случае нужно было распаковать файлы программы для того, чтобы после этого запустить ее на компьютере, то в этом случае нужно извлечь файлы самого инсталлятора, чтобы произвести с ними манипуляции. В примере представлена специальная программа под названием ResourcesExtract. Работает она следующим образом:
- Скачайте, установите и запустите приложение.
- Появится окно, в котором вам в первую очередь необходимо указать EXE-файл, который вы будете распаковывать. Делается это в поле Filename.
- После этого понадобится указать папку, в которую будут распакованы файлы. Делается это в поле Destination Folder.
- После этого можно приступать к распаковке. Для этого нужно нажать кнопку Start.
- При желании вы можете задать дополнительные параметры. Например, указать, какие именно файлы распаковывать. Делается это в области под названием Resource types to extract.
В итоге в указанной вами папке будут находиться файлы установщика. Вы сможете отредактировать их в любое время.
PE-Explorer
Разработчик: Heaventools Software Сайт: https://www.heaventools.ru/pe-explorer.htm Дата выхода последней версии: Октябрь, 2009 Стоимость: $129 – персональная лицензия
Под первым номером идет довольно распространенный редактор PE-Explorer. В отличие от своего собрата Resource Tuner, он способен редактировать не только ресурсы приложения, но и код. Несмотря на свой почтенный возраст, исправно работает даже в Windows 10. К сожалению, PE-Explorer умеет работать только с 32-битными файлами и при попытке открыть 64-битный бинарник сообщает об ошибке.
Утилита обладает богатой функциональностью: отображает все элементы заголовка РЕ, определяет, к каким DLL происходит обращение, предсказывает поведение программ и логику взаимодействия с другими модулями и даже открывает запакованные UPX, UPack или NSPack файлы. Кроме того, она позволяет просматривать и редактировать секции PE-файла, исследовать содержимое таблиц импорта и экспорта и проверять наличие и целостность цифровой подписи. В качестве «вишенки на торте» тут присутствует полноценный дизассемблер.
Но это только на словах, а на деле мы его сейчас проверим. Из-за того что продукт платный, я использовал триальную версию, готовую работать на протяжении 30 дней. Об урезанных функциях ничего сказано не было.
Запустим редактор и сразу же откроем наше подопытное приложение. PE-Explorer первым делом выводит информацию о заголовке PE-файла. Для получения сведений об остальных разделах достаточно пощелкать кнопки на панели инструментов. Жмем пиктограмму Disassembler и открываем окно для выбора поддерживаемых инструкций: SSE, SSE2 и прочее. Указываем необходимые и начинаем процесс нажатием кнопки Start Now.
В открывшемся окне большую часть занимает область с дизассемблерным листингом, чуть ниже располагается шестнадцатеричный дамп. Если в заголовке нижней панели выбрать вкладку Strings, то отобразятся все строки в исследуемом приложении. Так что поиском можно найти и эталонный пароль. Однако для этого пришлось бы перебрать весь внушительный список доступных строк, так что отложим этот вариант до худших времен.
Так как мы с помощью отладчика нашли адрес инструкции, которая отвечает за ход выполнения программы, то попробуем проверить этот адрес в PE-Explorer: нажимаем Ctrl-F (или Search → Find) и вводим адрес для поиска: 402801.
Что ж, я немного разочарован результатом дизассемблирования. Даже отладчик в этом месте показывает мне инструкцию test, а здесь я вижу лишь начало ее шестнадцатеричного кода: 0х85. При этом я не могу редактировать код! Зачем мне все эти возможности, если утилита не позволяет делать самую базовую вещь?
Я даже не могу списать этот недочет на ограничения демоверсии, так как о ее отличиях от платной ничего толком не сказано. Допускаю, что с теми целями, для которых этот продукт предназначен (статическое изучение приложения и вектора его выполнения), он справляется хорошо. Однако нашим требованиям программа не соответствует, поэтому смело вычеркиваю PE-Explorer из списка кандидатов.
Как распаковать EXE-файлы на Mac
Распаковка в операционной системе Mac происходит совсем другим способом. Для того, чтобы достать сами файлы с EXE, вы можете использовать простой архиватор. Принцип распаковки такой же, как и с архивами. В статье показано, как распаковать EXE-файлы, чтобы после запустить программу на компьютере. Именно таким образом вы можете запускать программы Windows в операционной системе Mac.
Итак, для того, чтобы произвести заявленные действия, вам необходимо выполнить следующее:
- В операционной системе нажмите по иконке увеличительного стекла, которая расположена справа сверху.
- В появившемся поле введите «Ассистент Boot Camp».
- В результатах выберите одноименную строку.
- Следом запустится программа, в которой вам необходимо поставить отметку напротив пункта «Загрузить последнее ПО поддержки Windows от Apple».
- Вставьте в компьютер флешку — именно на нее будет загружено дополнительное программное обеспечение.
- Подготовьте на диске пустой раздел, на котором будет не менее 50 Гб места.
- Нажмите кнопку «Продолжить».
- Выберите заранее подготовленный раздел, на который будет установлена Windows.
- На этом этапе вам необходимо вставить диск с операционной системой Windows в дисковод и нажать кнопку «Начать установку».
- Компьютер перезагрузится — не беспокойтесь, это вполне нормально.
- Снова укажите тот раздел, который подготовили под Windows.
- Выберите тип файловой системы. Если вы устанавливаете Windows выше версии XP, то выбирайте NTFS.
- Следом запустится процесс форматирования раздела. Это может достаточно долго длиться.
- Вставьте в компьютер флешку, на которую загружали дополнительное ПО. Автоматически запустится процесс установки всех драйверов с флешки.
- Компьютер снова будет перезагружен.
После этого вы без проблем сможете запускать файл EXE. Далее запустится инсталлятор, а дальнейшие действия аналогичны тем, что были в Windows.
Ошибки при открытии файла
Если при открытии файла возникает ошибка, то скорее всего по трём причинам: файл защищён, файл 16-битный, или это вообще не исполняемый файл.
1. Ошибка: Файл повреждён, сжат упаковщиком или защищён протектором.
Вероятность того, что файл сжат для уменьшения размера, весьма велика. Упаковщиков и протекторов для исполняемых файлов существует не один десяток, и всё время появляются новые. Resource Tuner поддерживает распаковку только одного, зато самого распостранённого упаковщика — UPX. Остальные упаковщики не поддерживаются, и вам придётся самостоятельно заниматься распаковкой файла, прежде чем вы сможете открыть файл для просмотра или редактирования.
Данная ситуация не рассматривается, как ошибка программы. Мы не собираемся ни бороться с попытками других авторов программ защитить свои творения от взлома, ни поддерживать распаковку нескольких десятков разных упаковщиков, среди которых есть и коммерчиские продукты, и самоделки.
Восстановление запуска exe вручную
Вручную действие будет немного сложнее, но зато не требует установки или загрузки программ, подойдёт для компьютера вне сети. Действия будут выполняться в реестре, поэтому не меняйте лишних параметров, так как это может плачевно сказаться на устойчивости системы.
- Нажмите Win + R и введите regedit;
- Найдите HKEY_CLASSES_ROOT.exe, проще всего найти среди большого множества разделов, введя название на клавиатуре, только в быстром темпе;
- Правый клик по значению «По умолчанию» и выберите «Изменить»;
- Замените параметр на слово exefile;
- Теперь в том же разделе найдите группу exefile;
- Откройте параметр «По умолчанию» двойным кликом и установите значение “%1” %*
- Далее перейдите внутрь в раздел shell и затем open;
- Теперь снова в «По умолчанию» вставьте значение “%1” %*
- Перезагрузите ПК.
Этот ряд действий позволяет добиться поставленной цели и восстановить ассоциацию файлов exe. Подобным образом можно делать и с другими форматами, но лучше воспользуйтесь специальными утилитами, вроде предыдущей.
Также следует знать, что существуют тяжелые варианты проблемы, когда даже строка «Выполнить» не работает. Тогда нажмите Ctrl+Alt+Del, затем выберите «Файл» и «Выполнить».
Особенности работы с DLL файлами и возможные проблемы
Некоторые DLL не удастся не только изменить, но даже открыть. Это происходит с защищенными библиотеками и проблема не решается без специальных программ для взлома.
Пользователи также сталкиваются с отсутствием библиотек, необходимых для работы некоторых программ. ОС при этом выдает сообщение о том, что «файл не найден». Для устранения неисправности требуется отыскать недостающие DLL с помощью поисковых систем и скачать. Затем – поместить в требуемую папку.
В редких случаях библиотеки DLL придется зарегистрировать в ОС:
- В Windows 7 (и более поздних версиях) войти в каталог, содержащий требуемый файл.
- Нажать «Shift» + правую клавишу мышки.
- В появившемся меню выбрать строчку: «Открыть окно команд».
- Набрать: regsvr32 dllxxxx.dll, где «dllxxxx.dll» – название регистрируемой библиотеки.
- Нажать «Enter».
Рубрика: Администрирование / Продукты и решения |
Мой мир Вконтакте Одноклассники Google+ |
ИВАН КОРОБКО
Модификация дистрибутивов
на основе Windows Installer
Возможность модификации дистрибутивов на основе Windows Installer всегда прельщала системных администраторов и специалистов системной поддержки. Рассмотрим один из компонентов Windows Installer Resource Kit – orca.exe. Эта утилита специально разработана для решения задач такого рода.
Решение задач автоматической установки программного обеспечения не ограничивается использованием ключей системы инсталляции Windows Installer. Получив возможность изменить пакет инсталляции, доступ к базе данных всех параметров дистрибутива, администратор может создавать пакеты для автоматической установки, не используя внешние файлы, содержащие различные настройки.
Уделим внимание программному управлению базой данных, хранящейся в msi-файлах.
Windows Installer
Это сервис установки и конфигурирования программных продуктов, который входит в состав операционной системы. Также он может устанавливаться как пакет обновления или отдельный дистрибутив.
В настоящее время используется Windows Installer 4.5, который можно бесплатно загрузить с сайта Microsoft в виде заплатки (hotfix) KB842288 – http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe.
Windows Installer, как и любое другое быстрое исправление, поддерживает ряд ключей командной строки, обеспечивающих управление автоматической установкой пакета:
- /norestart – не перезагружать компьютер после установки обновления;
- /queit – выполнить установку в «тихом» режиме;
- /help – вывод справки на экран, содержащей ключи и их краткое описание.
Файл msiexec.exe
Двойным щелчком мыши по файлу с расширением *.msi осуществляется запуск утилиты:
%SystemRoot%System32msiexec.exe /i *.msi
В таблице 1 приведен список часто используемых параметров командной строки, обеспечивающих автоматическую установку приложения.
Таблица 1. Параметры командной строки msiexec.exe
Параметр |
Описание |
/i |
Установка приложения в обычном режиме |
/f [p|o|e|d|c|a|u|m|s|v] |
Переустановка приложения. Если задан только ключ /f, то имеется в виду команда /fpecsm: p – восстановление удаленных файлов; о – обновление до более новой версии; e – полная переустановка приложения той же версии; d – восстановление удаленных файлов и перезапись файлов более старой версии; c – восстановление удаленных файлов или перезапись файлов, если CRC а – переустановка всех файлов; u – перезапись всех ключей реестра, касающихся данного приложения в ветвях HCKU, HCU; m – перезапись всех ключей реестра, касающихся данного приложения в ветви HCLM; s – перезапись всех ярлыков |
/a |
Выполнение административной установки приложения |
/x |
Деинсталляция продукта |
/j[u|m[/g]] |
Управление публикацией программного продукта: u – публикация для текущего пользователя; m – публикация для всех пользователей; g – идентификатор языка (управление установкой языкового интерфейса) |
/q[n|b|r|f] |
Определение уровня пользовательского интерфейса во время установки: n – отсутствие интерфейса; b – базовый интерфейс (по умолчанию); r – сокращенный интерфейс; f – полный пользовательский интерфейс |
Обычно для установки приложения в автоматическом режиме используют команду:
%SystemRoot%System32msiexec.exe /fa /qn /jm *.msi
где *.msi – полный путь к файлу с расширением MSI, например:
c:Windowssystem32msiexec.exe /fa/qn/jm «acdsee10.msi»
Windows Installer SDK
Пакет утилит, который можно загрузить бесплатно с сайта компании Microsoft, по адресу – http://download.microsoft.com/download/7/c/4/7c426dfc-46e2-4ded-bab4-3b33600ad7d1/msi45sdk.msi, используется для различного рода манипуляций с MSI-файлами.
По умолчанию каталог установки пакета Windows Installer SDK –%ProgramFiles%Windows Installer 4.5 SDK.
В его комплекте несколько утилит, в том числе дистрибутив программы ORC, расположенный в папке Tools.
Оrca.msi
Программа orca.exe, дистрибутив которой находится в папке %ProgramFiles%Windows Installer 4.5 SDKTools, предназначена для модификации *.msi-файлов. С помощью этой утилиты можно не только управлять устанавливаемыми компонентами, но и указать серийный номер продукта, изменить выводимые сообщения и др.
Установка orca.exe осуществляется в папку %:ProgramFiles%Orca запуском файла orca.msi.
Оrca.exe
Запуск программы осуществляется через «Пуск > Программы > orca.exe» (см. рис. 1). После успешного запуска приложения необходимо открыть msi-файл, который необходимо модифицировать. В данном случае в качестве опытного образца использовать дистрибутив AcdSee10 – файл ACDSee 10 Photo Manager.msi, находящийся в каталоге c:ACDSee.
Рисунок 1. Внешний вид утилиты orca.exe
Замечание: дистрибутив ACDSee 10 представляет собой *.ехе-файл – архив, который при запуске распаковывает msi-файл в папке C:Documents and Settings%username%Local SettingsApplication DataDownloaded Installations{0051E50E-CECD-4E04-A71A-B8C49733542A}ACDSee 10 Photo Manager.msi. Именно этот файл необходимо открыть утилитой orca.exe.
Orca.exe рассматривает msi-файл как SQL-базу данных, где msi-файл – это база данных, левая колонка таблицы (см. рис. 2), в которой хранятся различные настройки и списки. Правая часть – список полей выбранной таблицы с соответствующими значениями.
Рисунок 2. Создание новых полей в таблице
Структура msi-файлов
В базе данных пакета среди множества таблиц, которые можно объединить в группы, выделим самые важные из них:
- базовые таблицы;
- файловые таблицы;
- таблицы информации о программе.
Базовые таблицы
К базовым таблицам относят таблицы, описывающие параметры работы инсталлятора, устанавливаемые компоненты. Группа состоит из 11 связанных таблиц, краткое описание которых приведено в таблице 2.
Таблица 2. Базовые таблицы MSI Installer
Имя таблицы |
Краткое описание |
Feature |
Содержит список всех функций программного продукта |
Condition |
Содержит описание условий, определяющих порядок установки каждой функции, описанной в таблице |
FeatureComponents |
Связывает функции с компонентами |
Component |
Содержит список всех компонентов приложения |
Directory |
Содержит список всех каталогов, необходимых для инсталляции |
PublishComponent |
Содержит список функций и компонентов, публикуемых для использования в других приложениях |
Assembly |
Задает установки для сборок .NET Framework CLR и Win32 |
AssemblyName |
Задает схему для именования сборок .NET Framework CLR и Win32 |
Complus |
Содержит информацию, необходимую для установки приложений COM+ |
IsolatedComponent |
Связывает компонент, заданный в столбце Component_Application (обычно .exe), с компонентом, заданным в столбце Component_Shared (обычно .dll) |
Upgrade |
Содержит информацию для значительных обновлений программного продукта |
Файловые таблицы
Эта группа таблиц содержит информацию обо всех файлах, входящих в комплект поставки программного продукта. Большая часть этих файлов перечислена в таблице File. Хотя таблица Directory не входит в эту группу, она тесно связана с ней, так как отражает структуру каталогов приложения. В таблице 3 приведен список файловых таблиц и их краткое описание.
Таблица 3. Файловые таблицы MSI Installer
Имя таблицы |
Краткое описание |
File |
Представляет собой список файлов, которые будут распакованы в ходе инсталляции. Эта таблица связана с таблицей Directory, в которой зафиксирована структура каталогов устанавливаемого приложения и таблица Component, с помощью которой обеспечивается связь с компонентами |
RemoveFile |
Содержит список файлов, которые необходимо удалить при выполнении операции RemoveFiles |
Font |
Включает в себя список шрифтов, которые необходимо зарегистрировать в операционной системе |
SelfReg |
Содержит список саморегистрирующихся модулей. Installer не регистрирует EXE-файлы |
Media |
В таблице описывается набор дисков инсталляции |
BindImage |
Содержит информацию о привязках исполняемых файлов или DLL |
MoveFile |
Содержит список файлов, которые необходимо перенести во время инсталляции из исходного каталога в заданный каталог |
DuplicateFile |
Содержит список дублируемых файлов либо в другой каталог с тем же именем, что и исходный файл, либо в тот же каталог, но с другим именем |
Environment |
Используется для задания переменных окружения |
Icon |
Хранит файлы иконок. Каждая иконка этой таблицы во время инсталляции копируется в отдельный файл на диске |
MsiFileHash |
Эта таблица хранит 128-разрядное хэш-значение для исходных файлов в пакете инсталляции |
Таблицы информации о программе
Таблицы этой группы содержат важную информацию о пакете инсталляции, используемую на протяжении всего процесса инсталляции. В таблице 4 приведена информация о назначении таблиц.
Таблица 4. Файловые таблицы программы
Имя таблицы |
Краткое описание |
Property |
Хранятся все свойства пакета инсталляции |
Binary |
Содержатся двоичные данные для иконок, растров и т. п. Также здесь хранятся данные для пользовательских операций |
Error |
Используется для поиска шаблонов форматирования при обработке ошибок. Installer имеет свой собственный механизм обработки ошибок |
Shortcut |
Здесь хранится вся информация, необходимая для создания файловых ярлыков |
ReserveCost |
Эта таблица содержит информацию о необходимом дисковом пространстве для каждого компонента приложения |
Доступ к msi-файлам программным способом
Для обеспечения программного управления базой данных, хранящейся в msi-файле, используется шаблон, приведенный в листинге 1. Необходимо отметить, что шаблон чтения данных отличается от шаблона коррекции данных. О нем будет рассказано отдельно.
Листинг 1. Шаблон доступа к базе в msi-файле
Set obj = CreateObject («WindowsInstaller.Installer»)
Set base = obj.OpenDatabase (MSI,Mode)
base.OpenView(SQL-query).Execute
base.Commit
В приведенном шаблоне в первой строке осуществляется подключение к COM-объекту, с помощью которого осуществляется доступ к базе данных.
На следующей строке осуществляется подключение к базе данных с помощью метода OpenDatabase, который имеет два аргумента. Первый из них – имя базы, которым является полный путь к msi-файлу. Второй – режим доступа к базе данных:
- 0 – только чтение;
- 1 – чтение / запись.
На третьей – реализовано выполнение задаваемого запроса. SQL-запрос задается с помощью метода OpenView, а выполнение запроса – с помощью метода Execute.
Напомним, что в SQL-запросе регистр названия полей и имен таблиц имеет значение.
В последней строке осуществляется запись сделанных изменений в базе с помощью команды Commit.
Работа с таблицами в orca.exe
Рассмотрим подробнее структуру таблиц, содержащихся в msi-файле. Orca – мини-редактор SQL-таблиц, хранящихся как составная часть дистрибутива.
С полями таблиц баз можно совершать следующие действия:
- чтение существующих полей;
- создавать новые поля;
- удалять поля;
- изменять поля.
Чтение существующих полей
Для реализации шаблона поиска используется шаблон (см. листинг 2), отличный от приведенного в листинге 1. Это объясняется тем, что запись, удаление, замена осуществляются у единичного поля, а вывод на экран осуществляется для всех полей.
Трансформация листинга осуществляется в третьей строке листинга 1. Она разбивается на две подстроки – это строки 3 и 4 в листинге 2. Здесь разносятся методы OpenView и Execute.
Далее осуществляется чтение массива строк. Обратите внимание на то, что в запросе SELECT поля могут быть перечислены только по именам. Значение «*» в данном случае не работает. А во время чтения данных необходимо указывать нумерацию полей (Record.StringData(1)), начиная с единицы (1).
В листинге 2 приведен пример чтения всех полей (Property, Value) таблицы Property файла ACDSee 10 Photo Manager.msi:
Листинг 2. Чтение полей в указанной таблице
Set obj = CreateObject(«WindowsInstaller.Installer»)
Set ob = obj.OpenDatabase («C:ACDSeeACDSee 10 Photo Manager.msi»,0)
set View=ob.OpenView(«SELECT Property, Value FROM Property»)
View.Execute
Do
Set Record = View.Fetch
If Record Is Nothing Then Exit Do
Wscript.Echo Record.StringData(1) + vbTab+vbTab+Record.StringData(2)
Loop
Set View = Nothing
Создание новых полей
Создание новых полей используется достаточно часто, например, для того чтобы записать в дистрибутив программы ее серийный номер. Для этого необходимо добавить в таблицу Property поле PIDKEY с соответствующим значением, содержащим серийным номер продукта. Чтобы добавить новое поле, необходимо установить курсор на нужную таблицу (см. рис. 3) и, нажав в произвольной ее части правую кнопку мыши, выбрать пункт Add Row или нажать комбинацию клавиш . В появившемся диалоговом окне будет приведен список доступных полей. Необходимые значения можно присвоить в этом же окне.
Рисунок 3. Изменение параметра
Аналогичную операцию можно выполнить программным способом (см. листинг 3). Для этого необходимо вызвать объект WindowsInstaller.Installer. На основе шаблона, приведенного в листинге 1, сформируем листинг 3. В качестве второго параметра метода OpenDatabase необходимо указать 1, поскольку выполняется операция записи данных.
Самым сложным в данном листинге правильно сформировать запрос. Особенность запроса INSERT INFO заключается в том, что в первых по счету скобках, в которых указывается название полей, имя поля должно быть задано с родителем. Все имена параметров в запросе указываются без кавычек; все присваиваемые значения – в кавычках и, наконец, названия полей и таблиц чувствительны к регистру.
Листинг 3. Создание нового атрибута в таблице
Set a = CreateObject(«WindowsInstaller.Installer»)
Set b = a.OpenDatabase («C:acdseeACDSee 10 Photo Manager.msi»,1)
b.OpenView(«INSERT INTO Property ?
(Property.Property, Property.Value) VALUES («PIDKEY», «1234567890»)»).Execute
b.Commit
Удаление существующих полей из таблицы
Удаление какого-либо поля осуществляется в соответствии со следующим алгоритмом:
- установить курсор на таблицу, в которой необходимо удалить параметр;
- установить курсор на удаляемый параметр в таблице;
- нажать кнопку на клавиатуре или правую кнопку мыши, а в контекстном меню – DELETE;
- подтвердить намерение удалить параметр.
Эту же задачу можно решить программным способом (см. листинг 4), используя шаблон 1. Для обеспечения возможности записи в таблице необходимо установить второй параметр метода OpenDatabase равным единице (1).
Листинг 4. Удаление существующего атрибута в таблице
Set a = CreateObject(«WindowsInstaller.Installer»)
Set b = a.OpenDatabase («C:acdseeACDSee 10 Photo Manager.msi»,1)
b.OpenView(«DELETE FROM Property WHERE «PIDKEY»=»1234567890″)»).Execute
b.Commit
Изменение значений существующих полей
Изменение значения осуществляется путем установки курсора в необходимую ячейку двойным щелчком левой кнопки мыши (см. рис. 3).
Программное изменение свойства осуществляется по тем же правилам. По сравнению с предыдущими двумя случаями, изменяется только запрос.
В листинге 5 осуществляется отключение компонента Device Detector.
Листинг 5. Изменение значений существующих полей таблицы
Set a = CreateObject(«WindowsInstaller.Installer»)
Set b = a.OpenDatabase («C:acdseeACDSee 10 Photo Manager.msi»,1)
b.OpenView(«UPDATE Feature SET Level=»0″ WHERE Feature=»DevDetect»»).Execute
b.Commit
Заключение
Внимательно изучив предложенный вариант, читатель без труда сможет либо с помощью сценария на VBScript, либо с помощью программы orca.exe значительно облегчить себе задачу массовой установки программного обеспечения, что позволит сэкономить массу времени и сил.
Мой мир
Вконтакте
Одноклассники
Google+
Часть 2
Clickteam Install Creator 2
Домашняя страница: http://www.clickteam.com/install-creator-2
Компания Clickteam выпускает простые и дружелюбные продукты для разработчиков: например, Clickteam Fusion, The Games Factory, Multimedia Fusion. В этом же ряду находится программа Install Creator. Основное преимущество продукта — быстрое создание дистрибутива при помощи пошагового мастера.
Разделы настроек расположены в такой строгой последовательности в виде вкладок. Вначале указываются данные (Files), текстовое содержание диалогов (Wizard Text), формат окна (Window), дополнительные настройки (Options), настройки деинсталлятора (Uninstaller), размер дистрибутива (Build). После нажатия на Build запускается компиляция инсталлятора, остается лишь указать место его расположения.
Инсталлятор занимает 65 КБ, с учетом деинсталлятора это 105 КБ. Вдобавок к этому, в Install Creator применяется один из двух алгоритмов компрессии (zipper/ differentiator), оптимальный вариант определяется автоматически. При необходимости, данные можно поместить в пакет отдельно от инсталлятора.
Функциональность Clickteam Install Creator унифицирована, отсутствуют некоторые важные опции. Так, мультиязычность не поддерживается, русский язык в перечне локализаций и вовсе отсутствует. Интеграция со сторонними решениями не предусмотрена, поэтому работа с большими проектами (подразумевающими множество связей в системе) будет неудобной. Программа не позволяет создавать обновления, патчи. Впрочем, в последнем случае, можно использовать Patch Maker — разработку Clickteam.
В незарегистрированной версии Install Creator присутствует реклама. Профессиональная версия, помимо снятия этого лимита, позволяет включать в дистрибутив несколько редакций, устанавливать лицензионное ограничение для пользователя инсталлятора.
Резюме. Возможности Install Creator будут востребованы при работе с несложными проектами. Получаемые инсталляторы содержат базовый набор пользовательских опций, среди которых нет выбора языков или профиля установки. Определенно, это максимально простое решение среди всех упомянутых в обзоре инсталляционных комплексов.
Actual Installer
Домашняя страница: http://www.actualinstaller.com/
Actual Installer — программа для создания достаточно сложных установщиков Windows Installer без использования сценариев. В базовый набор возможностей входят мультиязычность, эффективная компрессия, детальная настройка интерфейса, командная строка и прочие функции, перечисляемые ниже.
Использование пошагового мастера не предполагается, но доступно окно параметров для нового проекта. Определив базовые сведения продукта, можно перейти в главное окно программы. Опции расположены в 5 секциях — «Общее», «Установка», «Диалоги», «Система» и «Реестр».
В разделе General (Общее) указывается информация о проекте, здесь же настраивается внешний вид мастера установки. В процессе установщик может проверять системные требования (такие как версия ОС, привилегии пользователя) и зависимости (Microsoft .NET Framework, Internet Explorer, Adobe Reader, Java, SQL Server и прочие). При отсутствии указанных компонентов, инсталлятор потребует от пользователя скачать и установить их.
В Installation («Установка») — расположение файлов и папок, расположение исполнимого файла, настройки процессов установки, обновления и деинсталляции. Оба процесса могут осуществляться в тихом режиме, не требуя вмешательства пользователя. В довесок к установщику, может использоваться мастер обновлений (Actual Updater).
Dialogs («Диалоги») предоставляют доступ к «начинке» разделов, включая текст лицензионного соглашения, readme файла, в том числе в формате RTF. Здесь же — выбор языков локализации, причем русский язык числится в списке. Ненужные разделы установщика легко отключить.
System («Система») — настройка системных изменений, вносимых при инсталляции: ярлыки, ключи реестра, переменные и пользовательские команды.
Register («Реестр») — установка файловых ассоциаций, переменных окружения, библиотек.
После выставления нужных опций достаточно нажать на кнопку Build Project — инсталлятор готов к запуску. В случае, если при создании инсталлятора была пропущена важная опция, при компиляции Actual Installer даст об этом знать и укажет на ошибку.
Резюме. Actual Installer включает в себя практически все стандартные параметры и опции проекта. Это «промежуточный» вариант между очень простыми (вроде Clickteam Install Creator) и более тяжеловесными решениями, о которых также пойдет речь.
CreateInstall
Домашняя страница: http://www.createinstall.ru/
CreateInstall — инструментарий для создания установщиков. В его основу заложено две особенности — контроль над процессом установки и неограниченная расширяемость. Обе возможности реализованы благодаря языку программирования Gentee, применяемому для написания сценариев.
Интерфейс CreateInstall разбит на 3 вкладки — «Проект», «Скрипт установки» и «Скрипт деинсталляции». Первый раздел позволяет задать общие настройки инсталлятора: информация о продукте, поддерживаемые языки, пути, внешний вид. Дополнительно, инсталлятор можно защитить цифровой подписью и установить пароль.
«Проект» — не равноценная замена двух последующих разделов, т. е. для создания дистрибутива нужно тщательно настроить скрипты установки и деинсталляции. Соответствующие параметры отображаются в виде групп, можно отобразить их единым списком.
Дополнением для CreateInstall служит утилита Quick CreateInstall. Она значительно упрощает создание инсталлятора, предоставляя только базовые настройки проекта. Из Quick CreateInstall в дальнейшем проект можно импортировать в CreateInstall.
Код проекта не предназначен для самостоятельного редактирования, переноса в IDE-среду, экспорта. Хотя язык Gentee имеет отличный потенциал: как минимум, это переменные и функции, условные выражения и синтаксис, базирующийся на C, C++ и Java.
Существует 3 редакции программы — полная, light (простая) и бесплатная. Список различий между ними опубликован здесь. По большей части, отсутствующие функции бесплатной редакции программы видны при навигации по группам настроек скриптов.
Интерфейс и справка доступны на русском языке.
Резюме. CreateInstall — функциональная и доступная для понимания среда. Инструментарий CreateInstall не так уж и беден и позволяет обходиться собственными средствами. Но к недостаткам все же следует отнести замкнутость программы «в себе», подразумевая функции импорта и экспорта.
Advanced Installer
Домашняя страница: http://www.advancedinstaller.com/
Advanced Installer основывается на технологии Windows Inslaller, позволяя создавать msi-, exe- и других видов дистрибутивов. Этому способствует продуманный интерфейс и работа с проектами. В Advanced Installer можно обнаружить немало возможностей, которых нет в других подобных комплексах, о чем ниже.
Примечательно, прежде всего, разнообразие проектов: сюда входят инсталляторы, Java-установщики, обновления, дополнения, модули слияния и другие. В разделе меню Installer собраны команды импорта проектов из Visual Studio, RAD Studio, Real Studio, Visual Basic. Здесь раскрывается потенциал Advanced Installer во взаимодействии с IDE-средами.
Для каждого из выбранных типов проекта предусмотрен детальный мастер настройки. Есть общие шаблоны — Simple, Enterprise, Architect или Professional. Большая часть проектов доступна только для определенных типов лицензии, общедоступные проекты обозначены как None в графе License Required.
Как уже сказано, при создании проекта можно воспользоваться пошаговым мастером, где, в частности, доступен выбор способа распространения пакета, языков локализации, настройка пользовательского интерфейса, ввод текста лицензии и другие опции. Advanced Installer позволяет выбрать вариант распространения программы — оставить данные без компрессии, разделить на CAB-архивы, сохранить в MSI и др., добавить цифровую подпись, потребовать ввод серийного номера и т. д.
Главное окно Advanced Installer (редактор проекта), в простом режиме отображения (Simple), содержит несколько секций:
- Product Information (Информация о продукте) — ввод сведений о продукте, параметры установки.
- Requirements (Требования) — указание аппаратных и системных требований, зависимостей ПО. Также имеется возможность создания пользовательских условий.
- Resources (Ресурсы) — редактор ресурсов (файлов и ключей реестра).
- Deployment (Развертывание) — выбор типа распространения продукта. Это может быть MSI, EXE или веб-инсталлятор. Для MSI, EXE ресурсы можно поместить отдельно от инсталлятора.
- System Changes — переменные среды.
При выборе ресурсов могут использоваться файлы, ключи реестра, переменные окружения, конфигурационные ini, драйверы, базы данных и переводы. С помощью модулей объединения можно добавить и другие ресурсы, такие как сервисы, разрешения, ассоциации и др.
Для выполнения более сложных задач позволяется использовать пользовательские действия, EXE, DLL или скрипты, написанные на C, C++, VBS или JS. Для создания сценариев предусмотрен удобный редактор.
Однако следует отметить, что в режиме Simple доступна лишь малая часть разделов. Работая с Advanced Installer в ознакомительном режиме, есть смысл зайти в настройки и переключиться в другой режим работы с проектом. После этих действий становятся доступны новые подразделы редактора.
Резюме. Благодаря различным редакциям продукта (включая бесплатную), возможностям импорта, множеству шаблонов и схем, редактору проектов — Advanced Installer будет интересен широкой аудитории.
BitRock InstallBuilder
Домашняя страница: http://installbuilder.bitrock.com/
InstallBuilder — кроссплатформенная среда для создания инсталляторов. В перечень поддерживаемых систем входят: Windows ME — Windows 8, Mac OS X, FreeBSD, OpenBSD, Solaris (Intel & Sparc), AIX, HP-UX, IRIX, Linux (Intel x86/x64, Itanium, s390 & PPC). Инсталляторы доступны как для настольного, так и сетевого ПО. В первой части путеводителя уже рассматривался продукт IzPack, но для InstallBuilder характерна поддержка языков написания, включая не только Java, но и PHP, Perl, Python, Ruby, C/C++ и .NET/Mono.
Интерфейс программы доступен на русском языке. Для работы с проектом используется очень простая графическая оболочка. Присутствуют следующие секции с настройками:
- Product Details («Информация о продукте») — информация о проекте.
- Files («Файлы») — проводниковый интерфейс для добавления файлов
- Advanced («Расширенные настройки») — наиболее интересный раздел, где, пожалуй, и раскрывается вся мощь BitRock Installer. Для работы с проектами используется формат XML (см. обзор WiX в первой части), возможна совместная работа, ручная настройка проектов с поддержкой сценариев. Встроенные действия позволяют автоматизировать процессы установки и объединять задачи, делая их доступными в несколько кликов. Таким образом можно проверять зависимости, добавлять переменные окружения, изменять реестр и файловую систему и прочее. Для редактирования сценариев используется встроенный, очень простой, XML-редактор.
- Customization («Настройка») — настройка пользовательского интерфейса инсталлятора, переменных окружения, пост-установочных действий, платформ, разрешений и компрессии. Для сжатия применяется ZIP/LZMA-компрессия. Можно создать тихий установщик, работающий в текстовом режиме.
- Packaging («Упаковка») — для отслеживания ошибок имеется встроенный дебаггер. При построении легко создать кроссплатформенный инсталлятор. На выходе он использует «родную» среду ОС (это относится к графическим системам Windows, KDE и Gnome).
Резюме. BitRock InstallBuilder рекомендуется, прежде всего, для создания кроссплатформенных продуктов. Сценарий, основанный на XML-спецификациях, удобен в обращении, проект легко импортировать и экспортировать для редактирования во внешней среде. Таким образом, на основе данного XML-сценария можно быстро генерировать инсталляторы для всех требуемых платформ.
InstallMate
Домашняя страница: http://www.tarma.com/im9/index.htm
InstallMate представляет собой инструментарий для создания дистрибутивов на основе Windows Installer. Основные особенности: интуитивная графическая среда, широкий выбор элементов установки, проверка зависимостей, детальная настройка внешнего вида инсталлятора, поддержка компонентов, локализаций и расширений. Дистрибутивы, созданные с помощью InstallMate, отличаются компактностью и скоростью работы.
Мастер создания нового проекта позволяет выбрать существующий шаблон и указать начальные параметры — языки локализации (один или несколько), имя продукта.
Можно импортировать созданный проект или воспользоваться редактором InstallMate. Кстати говоря возможности импорта не впечатлили: поддерживаются продукты компании Tarma и проекты Visual Basic.
Главное окно программы содержит разделы с параметрами, разделенные, условно, на три секции:
- Общие настройки: детальная информация о проекте, программные зависимости, системные требования, компоненты, а также опции инсталлятора. В боковой панели Package можно также указать тип инсталлятора, компрессии, ссылку на скачивание (в случае с веб-инсталлятором), пароль на установку. В один инсталлятор можно добавить несколько пакетов.
- Компоненты: включение в дистрибутив элементов и связей: это файлы и папки, ключи реестра, ini-конфиги, переменные среды, файловые ассоциации, COM-классы, сервисы.
- Опции инсталлятора: с помощью редактора можно отредактировать текст диалогов. Предусмотрена гибкая настройка локализаций, InstallMate поддерживает 19 языков по умолчанию. Можно создать один дистрибутив с несколькими локализациями либо несколько проектов с одним языком. В этом же разделе доступны пользовательские действия, а также переменные — включая 250 предустановок. Расширить функциональность пакета можно с помощью расширений и DLL-библиотек.
Как было отмечено, при создании инсталлятора можно использовать шаблоны. Помимо шаблонов проектов, возможно создание пакетов на основе компонентов, определяя группы элементов. Из других опций стоит отметить скрытую и тихую установку и деинсталляцию, два типа сжатия (Deflate или LZMA).
Полный список функций представлен здесь.
Резюме. Профессиональная среда для создания инсталляторов с действительно удобным интерфейсом и быстродоступным инструментарием: можно оперативно переключиться с одного языка локализации на другой при создании дистрибутива, протестировать проект. Не хватает функционального пошагового мастера настройки, возможностей импорта. Сильная сторона — наличие всех стандартных функций, работа с переменными и действиями.
1) открываешь этот самый «мси» — если его собирал не ты (или если ты еще не разу не «сейвил» его при помощи МСИ Студио ) , то таблицы с путями к запакованным файлам (all tables/FilesSourcePath) в пакете еще нет
2) тогда жми «tools/exctract CABs- update source paths» -> все файлы заэкстрактятся по указанному тобой пути и в базе появится вышеуказанная таблица.
3) если все это прокатило — меняй файлы в том месте куда ты их распаковал и сохраняй мси. ( естесственно если будешь менять название и установочный путь к файлу — подправь в табличке)
4) если возникли проблемы — то глянь на Path Variables в IQ Views — если она указывает не туда — убей ее и повтори п2,3
5) если получаешь мессач что типа не все файлы были заэкстракчены — возможно они делаются «кастом экшеном» — и тут придется разбираться в каждом конкретном случае отдельно.
Вообще, по-простому, тебе наверно нужно просто удалить какие-то компоненты, вставить свои файлы и прописать к ним установочные пути тех которые ты грохнул.
Модификация дистрибутивов на основе Windows Installer
Возможность модификации дистрибутивов на основе Windows Installer всегда прельщала системных администраторов и специалистов системной поддержки. Рассмотрим один из компонентов Windows Installer Resource Kit – orca.exe. Эта утилита специально разработана для решения задач такого рода.
Решение задач автоматической установки программного обеспечения не ограничивается использованием ключей системы инсталляции Windows Installer. Получив возможность изменить пакет инсталляции, доступ к базе данных всех параметров дистрибутива, администратор может создавать пакеты для автоматической установки, не используя внешние файлы, содержащие различные настройки.
Уделим внимание программному управлению базой данных, хранящейся в msi-файлах.
Это сервис установки и конфигурирования программных продуктов, который входит в состав операционной системы. Также он может устанавливаться как пакет обновления или отдельный дистрибутив.
В настоящее время используется Windows Installer 4.5, который можно бесплатно загрузить с сайта Microsoft в виде заплатки (hotfix) KB842288 – http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe.
Windows Installer, как и любое другое быстрое исправление, поддерживает ряд ключей командной строки, обеспечивающих управление автоматической установкой пакета:
- /norestart – не перезагружать компьютер после установки обновления;
- /queit – выполнить установку в «тихом» режиме;
- /help – вывод справки на экран, содержащей ключи и их краткое описание.
Двойным щелчком мыши по файлу с расширением *.msi осуществляется запуск утилиты:
%SystemRoot%System32msiexec.exe /i *.msi
В таблице 1 приведен список часто используемых параметров командной строки, обеспечивающих автоматическую установку приложения.
Таблица 1. Параметры командной строки msiexec.exe
Установка приложения в обычном режиме
Переустановка приложения. Если задан только ключ /f, то имеется в виду команда /fpecsm:
p – восстановление удаленных файлов;
о – обновление до более новой версии;
e – полная переустановка приложения той же версии;
d – восстановление удаленных файлов и перезапись файлов более старой версии;
c – восстановление удаленных файлов или перезапись файлов, если CRC
(контрольная сумма) установленных файлов не совпадает с CRC файлов в дистрибутиве;
а – переустановка всех файлов;
u – перезапись всех ключей реестра, касающихся данного приложения в ветвях HCKU, HCU;
m – перезапись всех ключей реестра, касающихся данного приложения в ветви HCLM;
s – перезапись всех ярлыков
Выполнение административной установки приложения
Управление публикацией программного продукта:
u – публикация для текущего пользователя;
m – публикация для всех пользователей;
g – идентификатор языка (управление установкой языкового интерфейса)
Определение уровня пользовательского интерфейса во время установки:
n – отсутствие интерфейса;
b – базовый интерфейс (по умолчанию);
r – сокращенный интерфейс;
f – полный пользовательский интерфейс
Обычно для установки приложения в автоматическом режиме используют команду:
%SystemRoot%System32msiexec.exe /fa /qn /jm *.msi
где *.msi – полный путь к файлу с расширением MSI, например:
c:Windowssystem32msiexec.exe /fa/qn/jm «acdsee10.msi»
Windows Installer SDK
Пакет утилит, который можно загрузить бесплатно с сайта компании Microsoft, по адресу – http://download.microsoft.com/download/7/c/4/7c426dfc-46e2-4ded-bab4-3b33600ad7d1/msi45sdk.msi, используется для различного рода манипуляций с MSI-файлами.
По умолчанию каталог установки пакета Windows Installer SDK –%ProgramFiles%Windows Installer 4.5 SDK.
В его комплекте несколько утилит, в том числе дистрибутив программы ORC, расположенный в папке Tools.
Программа orca.exe, дистрибутив которой находится в папке %ProgramFiles%Windows Installer 4.5 SDKTools, предназначена для модификации *.msi-файлов. С помощью этой утилиты можно не только управлять устанавливаемыми компонентами, но и указать серийный номер продукта, изменить выводимые сообщения и др.
Установка orca.exe осуществляется в папку %:ProgramFiles%Orca запуском файла orca.msi.
Запуск программы осуществляется через «Пуск > Программы > orca.exe» (см. рис. 1). После успешного запуска приложения необходимо открыть msi-файл, который необходимо модифицировать. В данном случае в качестве опытного образца использовать дистрибутив AcdSee10 – файл ACDSee 10 Photo Manager.msi, находящийся в каталоге c:ACDSee.
Рисунок 1. Внешний вид утилиты orca.exe
Замечание: дистрибутив ACDSee 10 представляет собой *.ехе-файл – архив, который при запуске распаковывает msi-файл в папке C:Documents and Settings%username%Local SettingsApplication DataDownloaded InstallationsACDSee 10 Photo Manager.msi. Именно этот файл необходимо открыть утилитой orca.exe.
Orca.exe рассматривает msi-файл как SQL-базу данных, где msi-файл – это база данных, левая колонка таблицы (см. рис. 2), в которой хранятся различные настройки и списки. Правая часть – список полей выбранной таблицы с соответствующими значениями.
Рисунок 2. Создание новых полей в таблице
В базе данных пакета среди множества таблиц, которые можно объединить в группы, выделим самые важные из них:
- базовые таблицы;
- файловые таблицы;
- таблицы информации о программе.
К базовым таблицам относят таблицы, описывающие параметры работы инсталлятора, устанавливаемые компоненты. Группа состоит из 11 связанных таблиц, краткое описание которых приведено в таблице 2.
Таблица 2. Базовые таблицы MSI Installer
Содержит список всех функций программного продукта
Содержит описание условий, определяющих порядок установки каждой функции, описанной в таблице
Связывает функции с компонентами
Содержит список всех компонентов приложения
Содержит список всех каталогов, необходимых для инсталляции
Содержит список функций и компонентов, публикуемых для использования в других приложениях
Задает установки для сборок .NET Framework CLR и Win32
Задает схему для именования сборок .NET Framework CLR и Win32
Содержит информацию, необходимую для установки приложений COM+
Связывает компонент, заданный в столбце Component_Application (обычно .exe), с компонентом, заданным в столбце Component_Shared (обычно .dll)
Содержит информацию для значительных обновлений программного продукта
Эта группа таблиц содержит информацию обо всех файлах, входящих в комплект поставки программного продукта. Большая часть этих файлов перечислена в таблице File. Хотя таблица Directory не входит в эту группу, она тесно связана с ней, так как отражает структуру каталогов приложения. В таблице 3 приведен список файловых таблиц и их краткое описание.
Таблица 3. Файловые таблицы MSI Installer
Представляет собой список файлов, которые будут распакованы в ходе инсталляции. Эта таблица связана с таблицей Directory, в которой зафиксирована структура каталогов устанавливаемого приложения и таблица Component, с помощью которой обеспечивается связь с компонентами
Содержит список файлов, которые необходимо удалить при выполнении операции RemoveFiles
Включает в себя список шрифтов, которые необходимо зарегистрировать в операционной системе
Содержит список саморегистрирующихся модулей. Installer не регистрирует EXE-файлы
В таблице описывается набор дисков инсталляции
Содержит информацию о привязках исполняемых файлов или DLL
Содержит список файлов, которые необходимо перенести во время инсталляции из исходного каталога в заданный каталог
Содержит список дублируемых файлов либо в другой каталог с тем же именем, что и исходный файл, либо в тот же каталог, но с другим именем
Используется для задания переменных окружения
Хранит файлы иконок. Каждая иконка этой таблицы во время инсталляции копируется в отдельный файл на диске
Эта таблица хранит 128-разрядное хэш-значение для исходных файлов в пакете инсталляции
Таблицы информации о программе
Таблицы этой группы содержат важную информацию о пакете инсталляции, используемую на протяжении всего процесса инсталляции. В таблице 4 приведена информация о назначении таблиц.
Таблица 4. Файловые таблицы программы
Хранятся все свойства пакета инсталляции
Содержатся двоичные данные для иконок, растров и т. п. Также здесь хранятся данные для пользовательских операций
Используется для поиска шаблонов форматирования при обработке ошибок. Installer имеет свой собственный механизм обработки ошибок
Здесь хранится вся информация, необходимая для создания файловых ярлыков
Эта таблица содержит информацию о необходимом дисковом пространстве для каждого компонента приложения
Доступ к msi-файлам программным способом
Для обеспечения программного управления базой данных, хранящейся в msi-файле, используется шаблон, приведенный в листинге 1. Необходимо отметить, что шаблон чтения данных отличается от шаблона коррекции данных. О нем будет рассказано отдельно.
Листинг 1. Шаблон доступа к базе в msi-файле
Set obj = CreateObject («WindowsInstaller.Installer»)
Set base = obj.OpenDatabase (MSI,Mode)
В приведенном шаблоне в первой строке осуществляется подключение к COM-объекту, с помощью которого осуществляется доступ к базе данных.
На следующей строке осуществляется подключение к базе данных с помощью метода OpenDatabase, который имеет два аргумента. Первый из них – имя базы, которым является полный путь к msi-файлу. Второй – режим доступа к базе данных:
- 0 – только чтение;
- 1 – чтение / запись.
На третьей – реализовано выполнение задаваемого запроса. SQL-запрос задается с помощью метода OpenView, а выполнение запроса – с помощью метода Execute.
Напомним, что в SQL-запросе регистр названия полей и имен таблиц имеет значение.
В последней строке осуществляется запись сделанных изменений в базе с помощью команды Commit.
Работа с таблицами в orca.exe
Рассмотрим подробнее структуру таблиц, содержащихся в msi-файле. Orca – мини-редактор SQL-таблиц, хранящихся как составная часть дистрибутива.
С полями таблиц баз можно совершать следующие действия:
- чтение существующих полей;
- создавать новые поля;
- удалять поля;
- изменять поля.
Чтение существующих полей
Для реализации шаблона поиска используется шаблон (см. листинг 2), отличный от приведенного в листинге 1. Это объясняется тем, что запись, удаление, замена осуществляются у единичного поля, а вывод на экран осуществляется для всех полей.
Трансформация листинга осуществляется в третьей строке листинга 1. Она разбивается на две подстроки – это строки 3 и 4 в листинге 2. Здесь разносятся методы OpenView и Execute.
Далее осуществляется чтение массива строк. Обратите внимание на то, что в запросе SELECT поля могут быть перечислены только по именам. Значение «*» в данном случае не работает. А во время чтения данных необходимо указывать нумерацию полей (Record.StringData(1)), начиная с единицы (1).
В листинге 2 приведен пример чтения всех полей (Property, Value) таблицы Property файла ACDSee 10 Photo Manager.msi:
Листинг 2. Чтение полей в указанной таблице
Set obj = CreateObject(«WindowsInstaller.Installer»)
Set ob = obj.OpenDatabase («C:ACDSeeACDSee 10 Photo Manager.msi»,0)
set View=ob.OpenView(«SELECT Property, Value FROM Property»)
Set Record = View.Fetch
If Record Is Nothing Then Exit Do
Wscript.Echo Record.StringData(1) + vbTab+vbTab+Record.StringData(2)
Set View = Nothing
Создание новых полей
Создание новых полей используется достаточно часто, например, для того чтобы записать в дистрибутив программы ее серийный номер. Для этого необходимо добавить в таблицу Property поле PIDKEY с соответствующим значением, содержащим серийным номер продукта. Чтобы добавить новое поле, необходимо установить курсор на нужную таблицу (см. рис. 3) и, нажав в произвольной ее части правую кнопку мыши, выбрать пункт Add Row или нажать комбинацию клавиш . В появившемся диалоговом окне будет приведен список доступных полей. Необходимые значения можно присвоить в этом же окне.
Рисунок 3. Изменение параметра
Аналогичную операцию можно выполнить программным способом (см. листинг 3). Для этого необходимо вызвать объект WindowsInstaller.Installer. На основе шаблона, приведенного в листинге 1, сформируем листинг 3. В качестве второго параметра метода OpenDatabase необходимо указать 1, поскольку выполняется операция записи данных.
Самым сложным в данном листинге правильно сформировать запрос. Особенность запроса INSERT INFO заключается в том, что в первых по счету скобках, в которых указывается название полей, имя поля должно быть задано с родителем. Все имена параметров в запросе указываются без кавычек; все присваиваемые значения – в кавычках и, наконец, названия полей и таблиц чувствительны к регистру.
Листинг 3. Создание нового атрибута в таблице
Set a = CreateObject(«WindowsInstaller.Installer»)
Set b = a.OpenDatabase («C:acdseeACDSee 10 Photo Manager.msi»,1)
b.OpenView(«INSERT INTO Property ?
(Property.Property, Property.Value) VALUES («PIDKEY», «1234567890»)»).Execute
Удаление существующих полей из таблицы
Удаление какого-либо поля осуществляется в соответствии со следующим алгоритмом:
- установить курсор на таблицу, в которой необходимо удалить параметр;
- установить курсор на удаляемый параметр в таблице;
- нажать кнопку на клавиатуре или правую кнопку мыши, а в контекстном меню – DELETE;
- подтвердить намерение удалить параметр.
Эту же задачу можно решить программным способом (см. листинг 4), используя шаблон 1. Для обеспечения возможности записи в таблице необходимо установить второй параметр метода OpenDatabase равным единице (1).
Листинг 4. Удаление существующего атрибута в таблице
Set a = CreateObject(«WindowsInstaller.Installer»)
Set b = a.OpenDatabase («C:acdseeACDSee 10 Photo Manager.msi»,1)
b.OpenView(«DELETE FROM Property WHERE «PIDKEY»=»1234567890″)»).Execute
Изменение значений существующих полей
Изменение значения осуществляется путем установки курсора в необходимую ячейку двойным щелчком левой кнопки мыши (см. рис. 3).
Программное изменение свойства осуществляется по тем же правилам. По сравнению с предыдущими двумя случаями, изменяется только запрос.
Самое простое решение для замены крошечного файла внутри MSI?
Многие из наших клиентов имеют доступ к InstallShield, WISE или AdminStudio. Это не проблема. Я надеюсь, что есть способ предоставить нашим меньшим клиентам без доступа к коммерческим инструментам переупаковки свободно доступный набор инструментов и шагов для самостоятельной замены файлов.
Необходимо заменить только один файл конфигурации внутри сжатого MSI, можно предположить, что целевой пользователь уже установил Orca, знает, как использовать это для настройки таблицы свойств (для встраивания сведений о лицензии для развертывания GPO) и создал файл MST .
Отказ от ответственности : это очень похоже на другой вопрос, но и вопросы, и ответы в этой ветке неясны.
5 ответов
Хорошо, возвращаюсь к этому вопросу с моим собственным ответом, предлагающим небольшой приятный скрипт VB, который сделает всю тяжелую работу. Как упоминалось в исходном вопросе, целью было предоставить пользователям системного администратора простое решение для самостоятельного внесения обновлений / изменений.
Ниже представлена упрощенная версия кода, который я сейчас предоставляю клиентам.
Обновление. Объект MakeCab.MakeCab.1 устарел, код обновлен, чтобы теперь работать с Windows 7.
Я предполагаю, что вы сами создаете файл msi (?)
Когда вы используете Wix для создания своего msi-файла, клиент может просто регенерировать весь msi-файл после замены файла (wix это бесплатно). В противном случае должна быть возможность использовать несжатый файл, который не встроен в msi. В wix вам нужно добавить медиа-элемент без атрибута кабинета. Недостатком является то, что вам придется распространять два файла вместо одного msi.
Эта команда извлекает файлы MSI: msi2xml -c OutputDir TestMSI.MSI
Откройте OutputDir и измените файл.
Чтобы перестроить MSI, запустите: xml2msi.exe -m TestMSI.xml
Вам понадобится -m, чтобы игнорировать «тест контрольной суммы MD5», который не выполняется при изменении файла (ов) MSI.
IMHO такой сценарий указывает на отсутствие функции в устанавливаемом приложении, и его легче исправить в приложении, чем взломать MSI.
Изображение администратора
Позвольте мне сначала сказать, что простой способ «решить» эту проблему для ваших пользователей — это сказать им, чтобы они запустили административную установку вашего MSI. Это по существу извлечет все файлы из внутренних CAB и поместит все файлы в указанную папку:
msiexec.exe / a myinstaller.msi TARGETDIR = C: AdminImage
Затем ваши пользователи могут перейти непосредственно в извлеченную структуру папок и обновить соответствующий файл, а затем сопоставить каталог с другим ПК и установить MSI. У этого могут быть побочные эффекты, связанные с файлом, имеющим хеш-значение в MSI (во избежание спуфинга), но в большинстве случаев он работает нормально.
Запустить запрос XML XPath
Новые версии инструментов развертывания, такие как Installshield и Wix, имеют встроенную поддержку для выполнения запросов XPath во время установки и, следовательно, динамического создания разделов.
Обновление приложения
Настройка приложения на ПК состоит из нескольких шагов. Во-первых, это развертывание контента на машине — это должно быть сделано с помощью MSI, без сомнения. Однако в большинстве продвинутых приложений требуется несколько «задач настройки после установки», подобных этому «обновлению файла конфигурации».
Почти всегда лучше отложить эти задачи настройки до запуска приложения , чем реализовывать функции в MSI. Для этого есть много причин, но самая важная из них заключается в том, что только EXE-файл приложения будет гарантированно запускаться в правильном пользовательском контексте. Файлы MSI можно запускать с системными правами, с другой учетной записью пользователя или с помощью другого механизма.
Обычно мы рекомендуем использовать MSI для загрузки всего необходимого контента на ПК . Затем отметьте реестр, чтобы указать приложению, что это первый запуск (для обновлений вы можете увеличить счетчик или записать номер новой версии в HKLM). Затем приложение может выполнить последние шаги настройки в своей программе запуска. Он может скопировать файл config.xml по умолчанию откуда-нибудь из% ProgramFiles% и скопировать его в профиль пользователя. Затем он может считывать требуемые значения из HKLM, записанные MSI, а затем обновлять файл config.xml этими значениями.
В общем: избегайте шагов настройки, выполняемых MSI или любым другим механизмом настройки. Сосредоточьтесь на записи требуемых файлов и элементов реестра на машину, а затем позвольте приложению настроить надлежащую среду выполнения. Это позволит намного лучше контролировать развертывание. Если хотите, лучше «Инкапсуляция». MSI отправляет «сообщение» приложению через реестр, и приложение знает, «как правильно настроить себя» на основе сообщений.
Вам необходимо добавить запись в таблицу Media, добавив еще один носитель без CAB-файла и LastSequence на единицу больше, чем последняя последовательность CAB-файла. Затем вам нужно заменить в таблице File последовательность файла с новым файлом и обновить все остальные атрибуты файла, которые могли измениться.
Настройте приложение
Можно настроить приложение несколькими способами: настройте инсталлятор, управляйте файлами в проекте или добавьте пользовательский путь инсталлятора с помощью приложения Application Compiler или приложения Library Compiler.
Настройте инсталлятор
Измените значок приложения
Чтобы изменить значок по умолчанию, кликните по диаграмме слева от поля Library name или Application name, чтобы предварительно просмотреть значок.
Нажмите Select icon и найдите графический файл, чтобы использовать в качестве значка приложения. Выберите опцию Use mask, чтобы заполнить любые пробелы вокруг значка с белым или опции Use border, чтобы добавить границу вокруг значка.
Чтобы возвратиться к главному окну, нажмите Save and Use.
Добавьте библиотеку или информацию приложений
Можно предоставить дополнительную информацию о приложении можно следующим образом:
-
Библиотека/Имя приложения: имя установленного MATLAB® артефакты. Например, если именем является
foo
, установленным исполняемым файлом являетсяfoo.exe
, и Windows® записью меню «Пуск» является foo. Папкой, созданной для приложения, является
.InstallRoot
/ нечтоЗначением по умолчанию является имя первой функции, перечисленной в поле Main File(s) приложения.
-
Версия: значение по умолчанию 1.0.
-
Имя автора: Имя разработчика.
-
Адрес электронной почты поддержки: Адрес электронной почты, чтобы использовать для контактной информации.
-
Название компании: путь к полной установке для установленных артефактов MATLAB. Например, если названием компании является
bar
, путем к полной установке был бы
.InstallRoot
/bar/ApplicationName
-
Сводные данные: Краткий обзор, описывающий приложение.
-
Описание: Подробное объяснение о приложении.
Вся информация является дополнительной и, если не указано иное, только отображена на первой странице инсталлятора. В системах Windows эта информация также отображена в панели управления Windows Add/Remove Programs.
Измените экран-заставку
Отображения экрана-заставки инсталлятора после инсталлятора запустились. Это отображено наряду со строкой состояния, в то время как инсталлятор инициализирует.
Можно изменить изображение по умолчанию путем нажатия на Select custom splash screen. Когда файловый менеджер откроется, найдите и выберите новое изображение.
Можно перетащить мышью пользовательское изображение на экран-заставку по умолчанию.
Измените путь к установке
Эта таблица приводит путь по умолчанию использование инсталлятора при установке упакованных двоичных файлов на целевую систему.
Windows |
|
Mac OS X | /Applications/ |
Linux® | /usr/ |
Можно изменить путь к стандартной установке путем редактирования the Default installation folder поля под Additional installer options.
Текстовое поле, задающее путь, добавленный к корневой папке, является вашей папкой установки. Можно выбрать корневую папку для папки установки приложения. Эта таблица приводит дополнительные пользовательские корневые папки для каждой платформы:
Windows |
|
Linux | /usr/local |
Измените логотип
Отображения логотипа после инсталлятора запустились. Это отображено на правой стороне инсталлятора.
Вы изменяете изображение по умолчанию в Additional Installer Options путем нажатия на Select custom logo. Когда файловый менеджер откроется, найдите и выберите новое изображение. Можно перетащить мышью пользовательское изображение на логотип по умолчанию.
Отредактируйте замечания по установке
Замечания по установке отображены, если инсталлятор успешно установил упакованные файлы в целевой системе. Можно предоставить полезную информацию относительно любой дополнительной настройки, которая требуется, чтобы использовать установленные двоичные файлы и инструкции для того, как запустить приложение.
Определите тип данных входа командной строки (для упаковки только автономных приложений)
Когда исполняемое автономное приложение запущено в командной строке, входным типом по умолчанию является char
. Можно сохранить это значение по умолчанию или принять решение интерпретировать все входные параметры, когда числовой MATLAB удваивается.
Чтобы передать входные параметры автономному приложению как векторы символов MATLAB, выберите Treat all inputs to the app as MATLAB character vectors. В этом случае необходимо включать код, чтобы преобразовать char
к числовому MATLAB вводят в функции MATLAB, которая будет развернута как автономное приложение.
Чтобы передать входные параметры автономному приложению как числовые переменные MATLAB, выберите Treat all inputs to the app as numeric MATLAB doubles. опция в Приложении Application Compiler. Таким образом вы не должны включать код, чтобы преобразовать char
к числовому типу MATLAB. Не числовые входные параметры к приложению могут привести к ошибке.
Управляйте необходимыми файлами в проекте компилятора
Компилятор использует функцию анализа зависимостей, чтобы автоматически определить, какие дополнительные файлы MATLAB требуются для приложения к пакету и запуску. Эти файлы автоматически упакованы в сгенерированный двоичный файл. Компилятор не генерирует кода обертки, который предоставляет прямой доступ к функциям, определяемым необходимыми файлами.
Если вы используете одно из приложений компилятора, необходимые файлы, обнаруженные функцией анализа зависимостей, перечислены в поле Files required for your application to run или Files required for your library to run.
Чтобы добавить файлы, щелкните плюс кнопка в поле и выберите файл из файлового менеджера. Чтобы удалить файлы, выберите файлы и нажмите клавишу Delete.
Внимание
Удаление файлов из списка необходимых файлов может вызвать ваше приложение к не пакет или не запускаться правильно, когда развернуто.
Используя mcc
Если вы используете mcc
чтобы группировать ваш код MATLAB, компилятор не отображает список необходимых файлов перед выполнением. Вместо этого это группирует все необходимые файлы, которые обнаружены функцией анализа зависимостей, и добавляет их в сгенерированный двоичный файл.
Можно добавить файлы в список путем передачи одного или нескольких -a
аргументы к mcc
. -a
аргументы добавляют заданные файлы в список файлов, которые будут добавлены в сгенерированный двоичный файл. Например, -a hello.m
добавляет файл hello.m
к списку необходимых файлов и -a ./foo
добавляют все файлы в foo
и его подпапки к списку необходимых файлов.
Демонстрационное создание файла драйвера
Следующая цель вводит поддержку демонстрационное создание файла драйвера в MATLAB Compiler SDK™:
-
C++ совместно использовал библиотеку
-
Java® пакет
-
Блок.NET
-
Python® пакет
Демонстрационная функция создания файла драйвера в Library Compiler использует код MATLAB, чтобы сгенерировать демонстрационные файлы драйвера на выходном языке. Демонстрационные файлы драйвера используются, чтобы реализовать сгенерированные разделяемые библиотеки в приложение на выходном языке. В приложении нажмите Create New Sample, чтобы автоматически сгенерировать новый скрипт MATLAB или нажать Add Existing Sample, чтобы загрузить скрипт MATLAB, который вы уже записали. После того, как вы группируете свои функции, демонстрационный файл драйвера на выходном языке сгенерирован из вашего скрипта MATLAB и сохранен в for_redistribution_files_onlysamples
. Демонстрационные файлы драйвера также включены в инсталлятор в for_redistribution
.
Чтобы автоматически сгенерировать новый файл MATLAB, нажмите Create New Sample. Это открывает файл MATLAB для вас, чтобы отредактировать. Файл примера служит начальной точкой, и можно отредактировать его по мере необходимости на основе поведения экспортируемых функций. Демонстрационные файлы MATLAB должны следовать этим инструкциям:
-
Код файла примера должен использовать только экспортируемые функции.
-
Каждая экспортируемая функция должна быть в отдельном файле примера.
-
Каждый вызов той же экспортируемой функции должен быть отдельным файлом примера.
-
Выход экспортируемой функции должен быть n-мерным числовым, char, логическим, struct или массив ячеек.
-
Данные должны быть сохранены как локальная переменная и затем передали экспортируемой функции в коде файла примера.
-
Код файла примера не должен требовать взаимодействия с пользователем.
Дополнительные факторы, характерные для выходного языка, следующие:
-
C++ mwArray API —
varargin
иvarargout
не поддерживаются. -
.NET — Безопасный с точки зрения типов API не поддерживается.
-
Python Массивы ячеек и массивы символов должны иметь размер 1xN, и массивы структур должны быть скаляром. Нет никаких ограничений на числовые или логические массивы, кроме которых они должны быть прямоугольными, как в MATLAB.
Чтобы загрузить файл MATLAB, который вы уже записали, нажмите Add Existing Sample. Код MATLAB должен продемонстрировать, как выполнить экспортируемые функции. Необходимый код MATLAB может быть только несколькими линиями:
input1 = [1 4 7; 2 5 8; 3 6 9]; input2 = [1 4 7; 2 5 8; 3 6 9]; addoutput = addmatrix(input1,input2);
Этот код должен также следовать весь одинаковый инструкции, обрисованные в общих чертах для опции Create New Sample.
Можно также принять решение не включать демонстрационный файл драйвера вообще во время упаковочного шага. Если вы создаете свой собственный код драйвера на выходном языке, можно позже скопировать и вставить его в соответствующую директорию, если функции MATLAB упакованы.
Задайте файлы, чтобы установить с приложением
Файлы пакетов компилятора, чтобы установить наряду с теми это генерирует. По умолчанию инсталлятор включает readme файл с инструкциями относительно установки MATLAB Runtime и конфигурирования его.
Эти файлы перечислены в разделе Files installed for your end user приложения.
Чтобы добавить файлы в список, щелкните и выберите файл из файлового менеджера.
Файлы JAR добавляются к пути к классу приложений, как будто вы вызвали javaaddpath
.
Внимание
Удаление двоичного файла предназначается от результатов списка в инсталляторе, который не устанавливает намеченную функциональность.
Когда установлено на целевом компьютере, файлы, перечисленные в Files installed for your end user, сохранены в application
папка.
Дополнительные настройки во время выполнения
Тип пакетного приложения | Описание | Дополнительные опции настроек во время выполнения |
---|---|---|
Автономные приложения |
|
|
Дополнения Excel |
|
|
Смотрите также
applicationCompiler
| libraryCompiler
Похожие темы
- Создайте автономное приложение из MATLAB
- Создайте Excel Add-In из MATLAB
- Сгенерируйте C++ mwArray API Разделяемая Библиотека и Сборка Приложение C++ (MATLAB Compiler SDK)
- Сгенерируйте MATLAB Data API C++ разделяемая библиотека и создайте приложение C++ (MATLAB Compiler SDK)