Уроки
Написать нам

Урок 5. Оформляем коллекцию программ на CD - Уроки мастерства

У вас собралась большая коллекция программ и вы не прочь упорядочить её и записать на CD? И хотелось бы сделать этот CD самозапускающимся, с удобным меню для просмотра коллекции и установки программ прямо из этого меню? Знакомое желание. Знакомо оно также и производителям софта, которые выпустили массу программного обеспечения для решения этой задачи. Достаточно упомянуть только AutoPlay Menu Studio, CD Autorun Creator, Free AutoRun и другие. Но мы-то с вами являемся счастливыми обладателями Multimedia Builder - почти универсальной программы для создания мультимедийных приложений, и уж создать с помощью неё autoran для коллекции программ - просто пустяковое дело. Причем, по своим почти неограниченным возможностям Multimedia Builder запросто переплюнет все вышеперечисленные (да и не перечисленные, пожалуй, тоже) программы.

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

  1. Автоматически запускаться при вставке диска в CD-ROM. Ну, с этим все ясно. Программа генерирует при компиляции файл autorun.inf, который и укажет системе, какой файл надо запустить с диска.
  2. Иметь навигацию по группам программ (вы же собираетесь разбить программы на категории, не так ли?).
  3. В пределах каждой группы выводить список программ и краткое описание каждой из них.
  4. Запускать инсталляцию программ непосредственно из меню. А также, если необходимо, запускать разные патчи (русификаторы и обновления). Некоторые патчи работоспособны только при запуске их из каталога с установленной программой. То есть сначала патч нужно скопировать туда, а уж потом запустить. Эта проблема в данной статье не рассматривается, хотя имеет решение и средствами Multimedia Builder, и другими.
  5. Иметь возможность копировать в буфер обмена серийные номера и регистрационные имена, чтобы пользователю не пришлось лезть в Проводник, заходить в каталоги нашего компакт-диска и искать там разные файлы readme.txt, SN.txt и им подобные. То есть весь процесс инсталляции и регистрации программ должен осуществляться непосредственно из оболочки, которую мы собираемся сделать.

Круг задач определен, но запускать Multimedia Builder еще рано. Сначала нужно хорошенько подготовить все дистрибутивы для будущего компакт-диска. Во-первых, разбить все программы на сходные группы (антивирусы, просмотрщики, мультимедиа, плееры, утилиты, графика и т.п.). Для каждой группы создать папку (соответственно,например, Antivir, Viewers, Media, Players, Utils, Graphics etc.) и сложить туда схожие программы (но каждая - в своей папке!). Во-вторых, полностью избавиться от архивов zip и rar, в которые могут быть упакованы дистрибутивы (особенно скачанные из Интернета). Все запускающие файлы должны находиться в соответствующих папках в виде ехе-файлов. И в-третьих, подготовить в текстовых файлах краткую информацию о программах и, если надо, серийные номера. После этого сложить все созданные папки в одну общую под названием, например, Project, и убедиться, что общий размер этой папки не превышает вместимость имеющегося у вас компакт-диска (а они, как известно, выпускаются на 650, 700 и 800 Мб).

Вот теперь уже можно запустить программу Multimedia Builder, создать новый проект и сохранить его под именем, скажем, BestSoft в папку Project. Это нужно для того, чтобы после замены путей (об этом мы говорили на первом уроке) не пропала работоспособность самого проекта. Так как скомпилированный файл потом будет находиться именно в корне папки Project, то там же лучше сохранить и ваш файл BestSoft.mbd. А при записи компакт-диска этот файл в число записываемых не включать.

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

Здесь придется дать немного теории. Если вы еще не знаете (а на наших уроках мы об этом не говорили), то программа Multimedia Builder способна работать с многостраничными документами. До этого все наши проекты содержали только одну страницу - не было необходимости создавать больше. Однако в программе имеется возможность создавать необходимое количество страниц, причем эти страницы могут быть как совершенно различными, предназначенными для выполнения абсолютно разных функций, так и схожими, выполненными по одному шаблону. В последнем случае отпадает необходимость размещать одинаковые элементы на каждой странице - их достаточно разместить на мастер-странице. Для этого в программе существует две мастер-страницы, которые называются Master Page и Master Top Layer. Первая из них предназначена для размещения, в основном, элементов фона, так как всё, что находится на этой странице, будет отображаться на всех страницах проекта в самом низу и будет перекрываться другими объектами, находящимися на данной странице. И наоборот, всё, что вы разместите на странице Master Top Layer, будет всегда находиться на самом верхнем уровне и не может быть перекрыто ни одним объектом, находящимся на текущей странице (например, можно положить там кнопку "Exit", и она появится сразу на всех страницах).

Использование страницы Master Page позволяет выбрать общий фон для всех страниц. Больше в свойствах этой страницы ничего не доступно. Зато в свойствах любой страницы вы можете выбрать фон тремя способами: включить флажок "Как в первой" - фон будет таким, каким он выбран для первой страницы проекта, "Как в главной" - отобразится фон страницы Master Page, и не включать никаких флажков, а выбрать для текущей страницы фон, отличный от всех остальных.

А вот в свойствах страницы Master Top Layer доступно всё то же, что и в свойствах обычных страниц. И всё сделанное там автоматически "спроецируется" на все страницы проекта.

Теперь нам становятся ясны по крайней мере две вещи: первое - это то, что страницы очень удобно использовать, когда необходимо изменять содержимое окна проекта. Вместо того, чтобы скрывать ненужные объекты и показывать другие, можно просто перейти к другой странице с нужным содержимым. И второе - если в проекте будет фон, в качестве которого используется растровая картинка, то размещение ее на странице Master Page не только облегчит работу, но и уменьшит размер файла проекта (действительно, ведь тогда храниться будет только один битмап).

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

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

MMB Script
FirstPage() - на первую страницу
LastPage() - на последнюю страницу
NextPage() - на следующую страницу
PrevPage() - на предыдущую страницу (по порядку в проекте)
Page("") - на страницу... (в кавычках указывается имя)
PageTimer("","") - на страницу... через время...(первый параметр - имя страницы, второй - время в мс)

Теперь, вооруженные новыми знаниями, приступим непосредственно к созданию проекта.

Итак, я собираюсь сделать пока одну страницу будущего автоплей-меню, для одной категории программ. А остальные страницы будут сделаны "под копирку", так как будут содержать те же объекты, просто с другим содержанием (изменятся надписи, содержание текстовых блоков, ссылки на файлы и т.п.). Пусть это будет страница с антивирусными программами. Остальные категории программ, которые я взял для примера, вы можете увидеть на рисунке ниже.

Сразу договоримся, что не будем делать навороченный дизайн. Наша задача сегодня - это конструктив, а уж когда все будет работать, вы и сами сможете позаботиться об эстетике. Поэтому свою страницу я оформил так же, как оформлял мр3-плеер, сделанный на втором уроке - с помощью цветных прямоугольников создал нехитрый дизайн. Цвет фона выбрал что-то типа "какао с молоком".

Общий заголовок меню и подзаголовок группы написаны шрифтом Times коричневого и белого цвета. Здесь уместно будет напомнить, что одни и те же шрифты не всегда будут одинаково отображаться на всех компьютерах, а при использовании оригинальных шрифтов, которых не окажется на другом компьютере, и вовсе нельзя предугадать результат. Поэтому выхода здесь по крайней мере видится два: первый - внедрить нужный шрифт в проект и использовать команду ), которая при старте проекта будет инсталлировать шрифт во временную папку компьютера пользователя, и второй, более простой - преобразовать текст в рисунок.

Делается это так: выделяете надпись и в меню "Объект" выбираете пункт "Преобразовать в рисунок". После этого у вас в проекте появляется битмап вместо текста, а сам текст не удаляется, а делается скрытым и ему присваивается имя Текст_BAK. Что очень мудро, поскольку дает возможность вернуться к редактированию исходного текста. Так что вам решать, преобразовывать ли текст в рисунок или нет (я думаю, что заголовки преобразовать уместно, а текстовые блоки нет никакой необходимости, если выбирать для них системный шрифт типа MS Sans Serif.

Саму страницу проекта я сразу назвал Antivir, а заодно создал еще семь пустых страниц (нажатием кнопки "Добавить страницу" на нижней инструментальной панели). Им также дал названия сообразно категориям программ (Commander, Viewer, Utils, Media, CDROM, Internet и Screen). И хотя на этих страницах пока ничего еще нет, на них уже нужно будет ссылаться из первой страницы, назначая команды перехода к ним.

Кнопки создайте обычным инструментом "Текстовая кнопка" и выберите для них цвет, как у фона. Кстати, стандартную кнопку можно растягивать в любую сторону, поэтому я сделал их вытянутыми. Таким же образом создал кнопки выхода и сворачивания окна (см.рисунок), но превратил их в маленькие квадратные, а в качестве надписей выбрал знак тире и букву "Х" (маленькая хитрость!). Эти две последние кнопки можно сразу же убрать на страницу Master Top Layer.

Создав первую кнопку "Антивирусы", не торопитесь копировать ее, чтобы размножить для получения остальных! Сначала лучше прописать в ней все действия, чтобы не пришлось похожие действия вручную прописывать для остальных кнопок.

Итак, нажатие на кнопку "Антивирусы" должно приводить нас на страницу с именем Antivir. И хотя мы и так находимся на этой странице, но кнопка-то эта будет и на других страницах! Значит, надо назначить ей действие перехода к нужной странице. Поэтому в окне сценария я написал: Page("Antivir") (это можно было сделать и в окне назначения внешних команд, однако, зная о том, что любую команду можно написать и в окне сценария, скоро вы станете пользоваться только этим одним окном). Неплохо назначить кнопке также звуковое действие (типа щелчка). В своем проекте я внедрил три звуковых файла - различные для кнопки "Меню", для кнопок выбора категории, и для кнопок инсталляции. Внедрите в проект нужные звуковые файлы (их можно "стащить", например, из стандартного набора звуков Windows) и назначьте кнопке нужный звук.

Но это еще не все действия. Взглянув на картинку в начале этой страницы, вы можете задаться вопросом: а где же будут размещаться названия самих программ? Слева место занято кнопками меню, справа поле предназначено для информации о программах... Дело в том, что я решил сделать "убирающееся" меню. Скажем, щелкнули вы по кнопке "Утилиты", меню "отъехало", а вы попали на нужную страницу с программами-утилитами. И список их будет располагаться как раз на месте бывших кнопок меню. Надо попасть на другую страницу? Щелкнули кнопку "МЕНЮ" внизу страницы (для того я ее и сделал), и меню снова "приехало" на место, закрыв собой список программ. Заманчиво? А это на самом деле очень просто.

Предположим, что "отъездом" и "приездом" меню будут управлять два разных скрипта. И если приезд меню будет осуществляться щелчком по кнопке "МЕНЮ", то "отъезд" как раз должен происходить по щелчку на любой из кнопок категорий программ. Поэтому давайте создадим в проекте два нужных нам скрипта с названиями ShowMenu и HideMenu. Который для чего, надеюсь, и так понятно. И ничего, что пока эти скрипты "пустые", содержание их мы напишем чуть позже, главное - чтобы они были в проекте.

Итак, в сценарии кнопки "Антивирусы" нужно добавить строку RunScript("HideMenu"). Причем расположить эту строку ПЕРЕД строкой перехода на другую страницу, иначе программа может сначала перейти на указанную страницу, а на ней уже запустить скрипт с этим названием. Теперь после нажатия на кнопку запустится скрипт, который скроет меню, а уж затем мы перейдем к нужной странице.

Теперь можно скопировать кнопку и вставить нужное число раз. Затем останется изменить надписи на кнопках, и поменять имя страницы в скрипте Page("Antivir") на соответствующие. Расположив все кнопки вертикально одна под другой и тщательно выровняв, сглуппируйте все эти кнопки и назовите группу Menu.

Кнопке "МЕНЮ" (я назвал этот объект Показ меню), что в самом низу страницы, назначьте команду RunScript("ShowMenu").

Скрипты, управляющие показом и скрытием меню, будут основаны на уже известной вам команде плавного перемещения объекта. Перемещать будем, естественно, объект Меню.Сначала замерим его координаты на том месте, где оно сейчас находится (забыли, как это делается? А ну бегом на предыдущие уроки!). Затем с помощью клавиши со стрелкой опустим этот объект вниз, чтобы он оказался за пределами окна проекта. Там теперь меню и будет находиться всегда. Замерим его координаты на новом месте. И вот уже можно написать содержание скриптов ShowMenu и HideMenu. В первом из них у меня написано:

MMB Script
MoveTo("Меню","8,90,95")

А во втором -

MMB Script
MoveTo("Меню","8,360,65")

Первые две цифры в параметрах - это координаты, а третья - скорость перемещения (подбирается экспериментально).

Конечно, можно обойтись и без этих двух скриптов, просто написав указанные строки в окне сценария кнопок. Но представьте, что вы что-то захотите изменить в сценарии перемещения меню. И придется вам тогда открывать свойства всех кнопок и вносить изменения! А так просто подправите один скрипт - и всё!

После этого запустите проверку страницы. Нажмите кнопку "МЕНЮ". Оно должно плавно выехать снизу. Нажмите кнопку "Антивирусы" (других-то страниц у нас пока еще нет!) - и меню должно так же плавно "уехать" обратно. После проверки вы увидите, что, во-первых, кнопка "МЕНЮ" должна лежать в проекте выше остальных, а во-вторых, надо чем-то прикрыть плавающее туда-сюда меню, чтобы его не было видно между этой кнопкой и низом страницы. Но это вы уже сделаете самостоятельно.

Освободившееся место слева используем для размещения названий программ. Создайте текстовых объектов столько, сколько программ должно быть на этой вкладке (у меня в примере их шесть, смотри рисунок ниже). Не забудьте убрать эти объекты в самый нижний уровень, иначе они будут расположены поверх меню, а нам надо наоборот. Итак, мы щелкаем кнопку "МЕНЮ", оно выплывает, мы выбираем категорию "Антивирусы", меню "уплывает" обратно, и нашему взору предстает список программ антивирусного назначения. Что по логике должно быть дальше? А дальше при щелчке по названию какой-либо программы должно появиться всё то, что изображено ниже: информация о программе, серийные номера и кнопки для установки самой программы и ее патчей (русификации и обновлений).

Вот и создадим всё это в проекте. Информация о программе - обычный текстовый блок. Три строчки внизу окна - это объекты текста (надписи). Ну и три обычные кнопки для запуска исполняемых файлов.

По первому пункту добавить нечего - текст и текст. Про серийные номера объясню чуть ниже. А вот кнопкам сразу можно назначить действие Run Program, или в окне сценария выбрать команду Run и указать путь к исполняемому файлу. Запись должна выглядеть примерно так:

MMB Script
Run("d:\Project\file.exe")

Абсолютный путь в конце работы вы автоматически замените на относительный <SrcDir> или <SrcDrive> сразу для всех команд. Как это сделать, говорилось на первом уроке, поэтому повторяться не будем. Аналогично назначаете действия кнопкам русификации и обновления, если таковые имеются для данной программы.

MMB Script
Run("d:\Project\Antivir\panda antivirus\setup.exe")

С кнопками разобрались, переходим к текстовым объектам, предназначенным для серийных номеров. Ведь при щелчке на этих объектах в буфер должна копироваться информация, содержащая серийные номера и имена. Собственно, сделать это очень просто. Каждому текстовому объекту нужно назначить одинаковое по своей сути действие, и сценарий этот выглядит так:

MMB Script
Data$='Здесь введите серийный номер'
Clipboard("SEND","Data$")
Message("Скопировано в буфер","")

Основной здесь является команда Clipboard(). Параметр SEND означает "послать в буфер" (можно ведь еще и получать из буфера, верно?), а переменная Data$ указывает, что именно послать. К сожалению, вместо этой переменной не получится написать непосредственно текст, который нужно послать в буфер, поэтому переменная Data$ задается в первой строке сценария, где между одинарными кавычками (апострофами) вы должны разместить то, что нужно скопировать в буфер обмена.

Команда Message("Скопировано в буфер","") просто выводит сообщение о том, что все в порядке; эту строку вы можете убрать из сценария (но не уберёте ведь, не так ли?)

Сделав все вышеописанное, проверьте, копируется ли в буфер нужная вам информация. Если все было сделано правильно, будет однозначно работать.

Однако все вновь созданные объекты должны появляться на странице только после щелчка по имени первой программы в списке. А при щелчке по другим именам должны появляться эти же объекты, но с другим содержанием. Здесь я хочу заметить, что программа Multimedia Builder позволяет использовать одни и те же объекты, изменяя их действие в зависимости от других условий, но для нас это сейчас слишком сложно, и мы пойдем более простым путем.

Сгруппируйте все вновь созданные объекты (напомню - три кнопки, три надписи и текстовый блок) и присвойте группе имя CBK_Menu. После чего сделайте ее скрытой. Как вы уже знаете из предыдущего опыта, объект с таким именем будет скрыт всегда, как только щелкнут мышью вне его границ. Это-то нам и надо. Назначим надписи с первой программой в списке действие - показать объект CBK_Menu. И тогда при щелчке по названию программы появится все необходимое для установки программы. И пока вы будете щелкать мышью по кнопкам и текстовым объектам внутри области объекта CBK_Menu, он будет оставаться видимым. Как только вы щелкнете по пустому месту вне указанных границ, объект скроется, и вызвать его можно будет только повторным щелчком по названию программы в списке.

А если вы щелкните по названию следующей программы в списке, то скроется объект CBK_Menu, а на его месте появится что? Правильно, объект CBK_Menu1, относящийся к этой второй программе. А получить этот объект нам очень просто - достаточно скопировать и вставить уже созданный объект CBK_Menu. Затем останется только изменить информацию в уже готовых объектах на другую. А если для данной программы не предусмотрены русификация, нет серийных номеров и т.п., просто удалите из текущей группы являющиеся лишними объекты.

Проверив работоспособность первой страницы вашего проекта и убедившись, что все работает, можете смело копировать все объекты этой страницы на оставшиеся семь страниц. Так что и эти страницы почти готовы. Вам останется лишь рутинная работа - изменять названия, пути к файлам, текстовое описание и т.п.

Ну что еще добавить? Разумеется, описанный проект далеко не единственное возможное решение, так как разработан он лично мной и специально для этого материала. Понятно, что при разработке проекта для себя можно постараться получше, потратить времени побольше и удивить друзей посильнее :))) Так что все зависит только от вашей фантазии и умения работать головой. Зная основы работы с объектами в Multimedia Builder, можно творить чудеса.

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

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

02 Июня 2004
7113

Всего комментариев: 6


6. imitator26

15:44, 22 Сентября 2011Спам


Вот вы сделали пример с многими страницами! (который я так и не понял) Но вопрос в другом!
Мне нужно сделать оболочку с одной страницей как тут http://p01.spaces.ru/p....nyj.jpg вот сам exe http://f03.spaces.ru/f....run.exe
Как я только не мучался и не выходит! У меня диск с софтом и такая менюшка. Захотел сделать такую же, но вот беда не знал какой прогой делал автор и пришлось ехе фал разобрать прогой Restorator, тут я и узнал что автор использовал программу Multimedia Builder 4.9.8
Программу приабрёл, а мозгов не хватает! Помогите!

Ответ: Конкретные вопросы на форум, пожалуйста.

5. vovan_600 E-mail

08:50, 07 Февраля 2011Спам


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

Ответ: Все вопросы задавайте на форуме.

4. Вадим E-mail

14:35, 16 Декабря 2010Спам


Здравствуйте.
Можете подсказать как сделать чтобы это меню открывалось на DVD плеере? Примерно как меню у DVD фильмов.
Заранее спасибо.

Ответ: Здравствуйте!
Нет, это невозможно. Пользуйтесь специализированными программами для таких целей.

3. sattangelo

22:24, 05 Ноября 2010Спам


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

Ответ: К сожалению, никак. Для этого существуют другие специализированные программы.

2. Дмитрий E-mail

20:52, 15 Октября 2010Спам


Подскажите пожалуйста скрипт для открытия папок (папки) из проекта.
Run("Explorer")-а то так открывает Мои документы на диске С.

Ответ: Все вопросы на форум, пожалуйста.

1. Константин E-mail

03:22, 11 Февраля 2010Спам


А возможно создать DVD диск с объемом в 4500г или 8500?

Ответ: Вопрос не понят...

Добавлять комментарии могут только зарегистрированные пользователи
[ Регистрация | Вход ]