Недавно на хабре была статья про баг установщика Adobe. Эта статья меня задела тем, что автор сославшись на баг делает вывод о том, что даже такие большие и известные компании как Adobe «забывают, порой, об удобстве установки.» и могут «написать колосальной сложности и объема программы, но сэкономить на динамическом определении пути установки, реализация которого под силу даже студенту». Тут мне показалось что это камень в огород разработчиков инсталлятора Adobe. Поэтому я решил написать ответный пост и рассмотреть инсталляторы, их цену и пару багов. К Adobe отношения не имею.
UPD: Добавил картинку о трудностях локализации ))
Переносили InstallSHield 12 с одной машины на другую. Дело в том, что активация/деактивация InstallSHield 12 производится через интернет, следует отметить, что дективация производиться в автоматическом режиме. Переустановка затянулась на месяц, так как не могли активировать InstallShield на новой машине, получали ошибку что ключ уже используется на другой.
Переписка с сапортом InstallShield'a длилась до тех пор пока американский коллега с использованием грубой лексики не попросил их исправить ситуацию в нашу пользу. Во время переписки пришла красивая брошюрка с картинками, в которой было написано что-то вроде: проблемы с переносом InstallShield'a? Купите новую лицензию с более гибкими настройками!
И кто виноват в том что деинсталлятор криво работает? Разработчик?
Совет для данной проблемы: надо хамить, если ситуация того требует, громко заявить о том что лицензия стоит больших денег, а пользы от нее ноль. Либо покупать новую лицензию, если условия устроят.
Для краткости буду называть программы для создания инсталляторов «IDE», хотя это не самое лучшее название. Можно разделить IDE на два типа мультиплатформенные и нативные.
Мультиплатформенные — один проект для нескольких платформ. Это такие IDE как InstallAnywhere, InstallBuilder, InstallShield Multiplatform, Install4j. В таблице 1 указаны цены.
Нативные — один проект для одного семейства платформ. Чаще всего они написаны для семейства Windows. Например, InstallShield 2010, InnoSetup, InstallAware и д.р. В таблице 2 указаны цены.
Надо ли говорить, что бесплатные и платные версии IDE отличаются как небо и земля. Хотя это нисколько не умоляет трудов разработчиков ни тех ни других.
Из цен можно заключить, что инсталляторы обходятся не дешево. Уверен, что в разы дороже будет писать свое IDE и на его основе делать инсталлятор.
Начнем с Windows.
1. в большинстве своем (и в случае Adobe) инсталлятроы для Windows делаются на основе Windows Installer (.msi), у него как и у любого другого продукта есть свои баги.
2. при разработке инсталлятора используется IDE, у него как и у любого другого продукта есть свои баги.
3. инсталятор делает человек и он точно где-нибудь оставит пару багов. Каюсь, не раз так делал…
4. есть лицензии, а это очень важный вопрос! Конечно не для всех :)
Аналогичная ситуация для мультиплатформенных инсталляторов.
Как видно, не все баги в инсталляторах говорят о разработчике.
Рассмотрим для примера пару багов InstallAnywhere 2008, так как сейчас работаю с ним. У меня Enterprise версия она стоит около $4500.
Это IDE для создания инсталляторов Java проектов. Радует то, что при разработке инсталлятора можно использовать Java в полный рост :)
На рисунке приведен пример стандартной диаложки, причем когда текст вводиться в IDE скрол есть. Где можно встать на грабли? Если в тексте динамически вставляется какой-нибудь путь и он очень длинный у юзера, то такой баг может пройти мимо разработчика и тестеров… У кого руки кривые? У разработчика инсталлятора тоже есть доля вины…
Есть акшены, которые не видны пользователю, они запускают .bat файлы или что-то подобное. Естественно, путь до .bat файла нужно взять в кавычки на случай пробелов. IDE наглым образом удаляет последние кавычки при сохранении. На грабли можно встать, если у разработчиков и у тестеров встретились пути без пробелов, а у юзера есть заветный пробел. Если предыдущий баг был косметическим, то батник точно запускает что-то нужное. У кого руки кривые? У разработчика инсталлятора тоже есть доля вины…
Есть акшены, которые запускают код разработчика, упакованный в .jar файлы. Если в .jar файле есть папка META-INF, то код проигнорируется. Довольно странно, но эта фича описана в документации…
eyeofhell напомнил баг о трудностях локализации. На картинке перевод «Деинсталяция завершена» вместо «Удалить полностью»
Серьезный баг, который тянется от версии к версии в InstallAnywhere. Для учета установленного ПО используется .xml файл его можно найти так «C:\Program Files\Zero G Registry\.com.zerog.registry.xml». Дело в том, что запись в этот реестр происходит после того как юзер нажал кнопку «ГОТОВО» на последней диаложке инсталяции/деинсталяции, поэтому он смело может перезагружать комп, запускать другую инсталяшку или что-то подобное. Самое обидное, что изменить такое поведение невозможно. Проблемы, которые возникают при этом:
1. есть запись что программа установлена, но путь до нее пустой…
2. Получаем ошибку чтения файла, инсталлятор тихонько говорит «Хм, файл реестра какой-то кривой, сделаю новый» и создает :)
Чтобы поправить ситуацию несколько раз на своей машине удалял этот файл во время разработки и тестирования.
Извечный вопрс — что делать? Ставить, как будто ничего не было? А если крутятся сервисы, или они есть и не запущены, или в проекте есть конфликтные фичи? Не все файлы копируются в директорию установки. Здесь однозначного ответа для разработчиков не существует, нужно исходить из требований проекта и руководства…
Еще вопрос, почему для хранения данных об установленных программах используется xml-файл в случае InstallAnywhere или SQLite в случае Adobe?
Это делается для того чтобы обеспечить единый интерфейс при установке на различные платформы.
Более чем уверен, что проблема с инсталлятором продуктов Adobe упирается в вопросы связанные с лицензией, внутренним конфликтом фич и компонетов или чем-то подобным. И никак не связана с профессионализмом разработчиков инсталлятора.
UPD: Добавил картинку о трудностях локализации ))
Из личного опыта.
Переносили InstallSHield 12 с одной машины на другую. Дело в том, что активация/деактивация InstallSHield 12 производится через интернет, следует отметить, что дективация производиться в автоматическом режиме. Переустановка затянулась на месяц, так как не могли активировать InstallShield на новой машине, получали ошибку что ключ уже используется на другой.
Переписка с сапортом InstallShield'a длилась до тех пор пока американский коллега с использованием грубой лексики не попросил их исправить ситуацию в нашу пользу. Во время переписки пришла красивая брошюрка с картинками, в которой было написано что-то вроде: проблемы с переносом InstallShield'a? Купите новую лицензию с более гибкими настройками!
И кто виноват в том что деинсталлятор криво работает? Разработчик?
Совет для данной проблемы: надо хамить, если ситуация того требует, громко заявить о том что лицензия стоит больших денег, а пользы от нее ноль. Либо покупать новую лицензию, если условия устроят.
Мультиплатформенные и нативные.
Для краткости буду называть программы для создания инсталляторов «IDE», хотя это не самое лучшее название. Можно разделить IDE на два типа мультиплатформенные и нативные.
Мультиплатформенные — один проект для нескольких платформ. Это такие IDE как InstallAnywhere, InstallBuilder, InstallShield Multiplatform, Install4j. В таблице 1 указаны цены.
InstallAnywhere 2009 Enterprise/Standard Edition | $4,499.00/$1,999.00 | shop.flexerasoftware.com/product/fullproducts.asp |
InstallBuilder Enterprise/Professional | $1,995/ $1,395 | installbuilder.bitrock.com/purchase.html |
InstallShield Multiplatform | - | Снят с производства. |
Install4j Standard License | $1199 | www.ej-technologies.com/buy/install4j/single?currency=USD |
Нативные — один проект для одного семейства платформ. Чаще всего они написаны для семейства Windows. Например, InstallShield 2010, InnoSetup, InstallAware и д.р. В таблице 2 указаны цены.
InstallShield 2010 Professional/Premier | $1,999.00/$3,999.00 | shop.flexerasoftware.com/product/fullproducts.asp |
Inno Setup | free | www.jrsoftware.org/isinfo.php |
InstallAvare Developer/Studio Admin | $1499/$2999 | www.cleverbridge.com/client/185/index.html?studio |
Надо ли говорить, что бесплатные и платные версии IDE отличаются как небо и земля. Хотя это нисколько не умоляет трудов разработчиков ни тех ни других.
Из цен можно заключить, что инсталляторы обходятся не дешево. Уверен, что в разы дороже будет писать свое IDE и на его основе делать инсталлятор.
Баги инсталяторов.
Начнем с Windows.
1. в большинстве своем (и в случае Adobe) инсталлятроы для Windows делаются на основе Windows Installer (.msi), у него как и у любого другого продукта есть свои баги.
2. при разработке инсталлятора используется IDE, у него как и у любого другого продукта есть свои баги.
3. инсталятор делает человек и он точно где-нибудь оставит пару багов. Каюсь, не раз так делал…
4. есть лицензии, а это очень важный вопрос! Конечно не для всех :)
Аналогичная ситуация для мультиплатформенных инсталляторов.
Как видно, не все баги в инсталляторах говорят о разработчике.
Рассмотрим для примера пару багов InstallAnywhere 2008, так как сейчас работаю с ним. У меня Enterprise версия она стоит около $4500.
Это IDE для создания инсталляторов Java проектов. Радует то, что при разработке инсталлятора можно использовать Java в полный рост :)
На рисунке приведен пример стандартной диаложки, причем когда текст вводиться в IDE скрол есть. Где можно встать на грабли? Если в тексте динамически вставляется какой-нибудь путь и он очень длинный у юзера, то такой баг может пройти мимо разработчика и тестеров… У кого руки кривые? У разработчика инсталлятора тоже есть доля вины…
Есть акшены, которые не видны пользователю, они запускают .bat файлы или что-то подобное. Естественно, путь до .bat файла нужно взять в кавычки на случай пробелов. IDE наглым образом удаляет последние кавычки при сохранении. На грабли можно встать, если у разработчиков и у тестеров встретились пути без пробелов, а у юзера есть заветный пробел. Если предыдущий баг был косметическим, то батник точно запускает что-то нужное. У кого руки кривые? У разработчика инсталлятора тоже есть доля вины…
Есть акшены, которые запускают код разработчика, упакованный в .jar файлы. Если в .jar файле есть папка META-INF, то код проигнорируется. Довольно странно, но эта фича описана в документации…
eyeofhell напомнил баг о трудностях локализации. На картинке перевод «Деинсталяция завершена» вместо «Удалить полностью»
Серьезный баг, который тянется от версии к версии в InstallAnywhere. Для учета установленного ПО используется .xml файл его можно найти так «C:\Program Files\Zero G Registry\.com.zerog.registry.xml». Дело в том, что запись в этот реестр происходит после того как юзер нажал кнопку «ГОТОВО» на последней диаложке инсталяции/деинсталяции, поэтому он смело может перезагружать комп, запускать другую инсталяшку или что-то подобное. Самое обидное, что изменить такое поведение невозможно. Проблемы, которые возникают при этом:
1. есть запись что программа установлена, но путь до нее пустой…
2. Получаем ошибку чтения файла, инсталлятор тихонько говорит «Хм, файл реестра какой-то кривой, сделаю новый» и создает :)
Чтобы поправить ситуацию несколько раз на своей машине удалял этот файл во время разработки и тестирования.
Извечный вопрс — что делать? Ставить, как будто ничего не было? А если крутятся сервисы, или они есть и не запущены, или в проекте есть конфликтные фичи? Не все файлы копируются в директорию установки. Здесь однозначного ответа для разработчиков не существует, нужно исходить из требований проекта и руководства…
Еще вопрос, почему для хранения данных об установленных программах используется xml-файл в случае InstallAnywhere или SQLite в случае Adobe?
Это делается для того чтобы обеспечить единый интерфейс при установке на различные платформы.
Более чем уверен, что проблема с инсталлятором продуктов Adobe упирается в вопросы связанные с лицензией, внутренним конфликтом фич и компонетов или чем-то подобным. И никак не связана с профессионализмом разработчиков инсталлятора.