Сегодня я решил вместо обычной цельной статьи, посвящённой одному вопросу или одному инструменту, сделать обзор нескольких интересных и полезных инструментов, на которые я сам набрёл или на которые мне прислали ссылки в последнее время. Надеюсь, они тоже покажутся вам интересными, ну если ещё и принесут пользу, то это будет вообще замечательно.
InstallJammer
Программ для создания дистрибутивов программного обеспечения существует великое множество, и опытного разработчика программного обеспечения едва ли хоть одна из них удивит. Но, тем не менее, я всё же попробую сделать это нелёгкое дело (удивить читателей) и расскажу про InstallJammer.
Официальный сайт программы - www.installjammer.com. Однако, несмотря на то, что доменная зона сайта - com, а не org, программа эта распространяется совершенно бесплатно и даже имеет открытый исходный код. Конечно, многие популярные инсталляторы (InnoSetup, NSIS) также имеют открытый исходный код и не просят никаких денег с тех, кто ими пользуется. И даже размер имеют меньший - всего один-два мегабайта против тринадцати InstallJammer'овских. Однако у последнего есть один козырь, который отсутствует не только у InnoSetup и NSIS, но и у большинства коммерческих продуктов того же назначения. А козырь этот - кросс-платформенность. Сейчас многие производители софта выпускают версии своих продуктов не только для Windows, но также и для Linux и MacOS. Потенциал у этих платформ велик, а потому, если вы разрабатываете программное обеспечение (особенно ориентированное на западных пользователей), стоит внимательно следить за рынком. Всё. Мне уже стыдно: начинаю говорить прописными истинами. Это я не со зла, а исключительно для того, чтобы убедить вас в пользе кросс-платформенного программного обеспечения (которому и нужны программы установки для многих платформ). Заметьте, я не сказал "кросс-платформенные программы установки". Сами программы установки будут для каждой платформы свои, потому что не используются кросс-платформенные технологии вроде Java, делающие инсталляторы воистину громоздкими.
Программа поддерживает создание дистрибутивов для следующих платформ: Windows, Linux x86, Solaris Sparc, HPUX, FreeBSD x86, AIX PPC. Поддержка MacOS X обещана в обозримом будущем. Судя по темпам, которыми проект движется вперёд, ждать этого придётся недолго (тьфу-тьфу-тьфу, чтобы не сглазить). Для всех платформ можно создавать полноценные самораспаковывающиеся установщики. Правда, к сожалению, не реализована поддержка специфичных для платформы технологий, таких, как Windows Installer или RPM Packages Manager. Но, в принципе, это не так уж и важно, потому что большинству пользователей главное - чтобы программа работала, а уже каким образом эту работу реализует разработчик, принципиального значения не имеет.
Возможности создания дистрибутивов на достаточном практически для любой программы уровне. Поддерживаются многоязычные интерфейсы пользователя в программе установки, причём уже есть несколько переводов для разных языков. Есть возможность редактирования диалогов (правда, не в визуальном режиме, а путём задания их свойств), настройка действий (например, выполнение внешних программ или запись данных в файл), поддерживается, естественно, деинсталляция; можно создавать консольные программы установки. Редактор проектов удобный, чем-то напоминает InstallShield. Для возможности автоматической сборки дистрибутивов есть поддержка работы из командной строки. Ко всему прочему, на сайте программы в разделе "Download" можно скачать не только дистрибутив InstallJammer'а, но и коллекцию графических материалов, которые собраны авторами с разных сайтов и пригодятся в оформлении инсталляторов.
В общем, если у вас есть программа, которая устанавливается больше чем на одной операционной системе, то вполне стоит "обернуть" её инсталлятором, созданным с помощью InstallJammer'а.
VBto Converter
Настоящая беда программистов - проекты не столько многоплатформенные, сколько многоязычные (в смысле, созданные из кусков кода, написанных на разных языках программирования). Довольно трудно бывает состыковывать код на Visual Basic'e и... ну, например, Java. Скажете, в здравом уме и твёрдой памяти никто не будет создавать монстра, который использует код на VB, Java, C# и Python одновременно? Может быть. Однако расскажу реальный случай из жизни, пример как раз кросс-языкового маразма. Некоторая группа программистов разрабатывает коммерческий продукт для работы со звуком, который продаёт на Западе по принципу shareware. Весь код для быстроты работы пишется на Visual C++ с изрядным количеством вставок на Ассемблере. Недавно в продукт понадобилось включить ещё один модуль (автоматическое обновление). Руководитель проекта (сам не программист) поручил это написать разработчику, не в меру увлёкшемуся C#. Модуль, естественно, был написан на этом языке. Как известно, для работы программ, написанных на C#, нужно устанавливать .NET Framework (или Mono) размером более 20 Мб. До того, как добавилось автообновление, дистрибутив продукта "весил" четыре с половиной мегабайта. Для shareware-программ, которые распространяются по интернету, размер - важный фактор успеха. Думаю, можно на этом лирическое отступление закончить: всё и так понятно, всё было бы смешно, если бы не было так грустно.
Так вот, инструментов для перевода кода с одного языка программирования на другой создано немало (что, собственно, отнюдь не удивительно). Однако действительно качественных среди них так мало, что каждый заслуживает отдельного обстоятельного рассказа. Но сейчас я расскажу только об одном из них, имя которому - VBto Converter. Как видно из названия программы, она умеет конвертировать проекты, написанные на Visual Basic. Во что она их конвертирует? Много во что. Можно проект Visual Basic 6.0 перевести в проект Visual Basic .NET, Visual C#, Visual C++ и Visual C++ .NET, C++ Builder, Delphi и Visual J#. При этом конвертируется не только код самой программы, но и формы (диалоги), а также все важные настройки.
В принципе, для Visual Basic 6.0 такая программа гораздо более актуальна, чем для любого другого языка программирования. В своё время это был очень популярный продукт, на котором было написано немало хороших программ, однако Microsoft по одной ей известным причине не пожелала обеспечивать возможность поддержки кода Visual Basic 6.0 в Visual basic .NET. На мой взгляд, это было очень некрасиво по отношению к разработчикам, использовавшим этот язык, хотя, может быть, и выгодно с коммерческой точки зрения.
Код, получаемый на выходе конвертера, не просто компилируем и даже не просто читаемый, а ещё и качественно оформленный и структурированный, что выгодно отличает VBto Converter от большинства аналогичных утилит, которых я за последнее время перепробовал не так уж и мало. Правда, его отличает и ещё одно обстоятельство - цена. Если другие готовы были поделиться своим детищем бесплатно или просили, по крайней мере, не больше $50, то разработчики VBto Converter'а решили не скромничать, и предлагают купить свою разработку по цене $599. Есть, правда, и "специальное предложение": можно послать код на Visual Basic 6.0 им (разработчикам), заплатить некоторую сумму и получить от них код на любом из выбранных языков. В принципе, тоже неплохой вариант, если конвертировать нужно не слишком много, и это преобразование носит разовый характер.
Вот и всё об этом конвертере. Ой, не всё. Я же забыл дать адрес официального сайта! Он такой: vbto.net.
MoleBox
Есть такая проблема под Windows-системами, как "Ад DLL" (DLL Hell). Как её избежать? Как сделать так, чтобы программа минимально зависела от версий динамических библиотек, которые она использует? Способов множество. Можно все используемые библиотеки присоединять статически. Но это, к сожалению, возможно не всегда. Зато всегда можно воспользоваться программой MoleBox (www.molebox.com).
Что делает MoleBox? Она объединяет все файлы, нужные для запуска вашей программы, в один исполняемый файл. То есть, создаётся архив, к которому добавляется самораспаковщик, внутри архива уже находится ваша программа со всей нужной ей "свитой". Впрочем, совсем не обязательно архив делать самораспаковывающимся - можно распаковщик оставить отдельно, а сам архив - отдельно.
Чем это принципиально отличается от инсталлятора, спросите вы. Резонный вопрос, но ответ на него очень прост. Инсталлятор распаковывает вашу программу на жёсткий диск, а MoleBox - в оперативную память. Таким образом, приложение, использующее архив MoleBox, может работать вообще без установки. Этим, кстати, решается не только проблема работы с динамическими библиотеками, но и предохранение данных программы от повреждения не в меру любознательными пользователями. И не только ими. Это может также послужить дополнительной защитой от дизассемблирования (хотя, признаться, и не самой надёжной из всех возможных). Зато в качестве защиты от использования сторонними разработчиками ваших кровных DLL подойдёт как нельзя лучше. Впрочем... Есть ли тогда смысл вообще в использовании DLL вместо статически компонуемых библиотек? Хотя, в общем-то, для проектов, части которых пишутся на разных языках программирования, это вполне подходит.
Таким образом, резюмируем: MoleBox - удобное средство для объединения всех файлов, нужных программе, в один, что повышает мобильность приложения и его защищённость как от пользователей, так и от некоторых взломщиков.
Если у вас на примете есть программы, которые вам кажутся полезными, поделитесь ими. Пишите письма на мой электронный почтовый ящик: [email protected].
Вадим СТАНКЕВИЧ
Горячие темы