Почему не все приложения «переносимы»?

45

Недавно я пытался гораздо меньше «установить» материал на мой компьютер с Windows (я ненавижу установщиков - мне нужно знать, куда программы помещают материал…), предпочитая вместо этого использовать переносные или автономные версии приложений.

Я поместил их все в папку «Программы» на диск, отдельный от моего раздела Windows, поэтому, когда я переустанавливаю, все мои приложения доступны с минимальными усилиями, а с другой стороны, я получаю хорошую чистую настройку.

Такие приложения, как Office и Creative Suite, все еще требуют, чтобы я прошел через ужасно долгий процесс установки, когда тысячи случайных библиотек и инструментов выбрасываются в мою систему.

Почему приложения Windows все еще нуждаются в установке? Почему мы не можем просто перетащить Photoshop в папку OSX и просто заставить ее работать? Кто-нибудь еще фокусируется на портативных приложениях, или я просто зациклен на этом?

Tom
источник
3
Ответы на вопрос объясняют любопытное «почему». Тем не менее, восклицательное «но почему» все еще остается (как в «но почему мы не можем все просто ладить»).
dbkk101
2
Я тоже ненавижу установщиков. с тобой все в порядке
Ник
2
Это выглядит как неправильный вопрос. Если вы хотите использовать переносимые приложения, правильный вопрос будет выглядеть так: «Какие программы переносимы?». Например, вы можете подумать, что вам нужен MS Word, когда вам действительно нужна программа, которая может читать и записывать файлы данных .doc. Open Office сделает это ... и, в отличие от MS Word, он доступен в портативном формате ... У меня есть его копия (и Abiword) на флеш-накопителе, который все время подключается к моему ноутбуку. Есть довольно много портативных приложений. portablelinuxapps.org предлагает 184 для Linux, в то время как portableapps.com/apps предлагает 232 +
Остальная часть комментария Билла: ... приложение для Windows для меню [возможно, оба содержат хороший набор тривиальных утилит]). Выберите те, которые вы хотите, и выбросьте непереносимые программы, без которых вы можете обойтись ... большинство моих приложений живут на USB-ключе. Это, по крайней мере, упростит спагетти-суп из файлов на вашем HD.
studiohack
Также мне кажется, что лучшие инструменты портативны. Я могу быть предвзятым.
Властимил Овчачик

Ответы:

35

Установщики - это результат многолетней эволюции, и немного (упрощенная) история помогает понять, почему они делают то, что делают.

Модель Windows 3.1 предлагала файлы конфигурации в стиле config.ini для каждого приложения с поддержкой общих библиотек, идущих в системные папки, чтобы избежать дублирования и неиспользованного дискового пространства.

Windows 95 представила реестр, позволяющий центральное хранилище для конфигурации приложения, заменяя многие файлы конфигурации. Что еще более важно, конфигурация Windows была сохранена в том же месте.

Реестр стал раздутым из-за того, что приложения не убирали за собой. DLL-ад произошел в результате того, что несколько версий одних и тех же общих библиотек перезаписали друг друга.

.NET представила концепцию app.config (почти ini-файлы отметки 2, на этот раз с немного большей экономией структуры разработчики тратят время на написание парсеров вручную). GAC был представлен версиям совместно используемых сборок в попытке предотвратить DLL Hell.

В Windows XP и, более того, в Vista, Microsoft попыталась определить пространство пользователей как место для хранения пользовательских данных и файлов конфигурации в одном стандартном месте, чтобы обеспечить перемещение профилей и простую миграцию (просто скопировать свой профиль) с приложениями, установленными в Program Files. ,

Так что, я думаю, причина в том, что «приложения в окнах предназначены для жизни в одном месте, их общих зависимостей в другом и пользовательских данных в другом», что в значительной степени противоречит концепции копирования одного места.

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

xcopy - это «простой случай» и, безусловно, не подходит для всего.

DavidWhitney
источник
1
Хорошее, простое объяснение!
Алекс
7
Другая важная причина для установщиков (особенно таких, как Office) заключается в том, что ни один пользователь не должен иметь возможности влиять на другого пользователя в той же системе, если он не является администратором. В Office 2007 весом около 500 МБ, если пользователь хочет использовать его, он должен иметь свою собственную локальную копию. Это будет 1,5 ГБ для 3 пользователей в одной системе! Google Chrome устанавливается в локальный каталог пользователей, поэтому, если у вас есть 10 пользователей, у которых у всех есть Chrome, это 10 разных версий, которые необходимо обновить и поддерживать. Очевидно, что у каждого пользователя есть свои плюсы и минусы в сравнении с центральным развертыванием.
Джошуа
1
Некоторые приложения, такие как Photoshop (по крайней мере, до CS4), можно просто скопировать, а при запуске - создать хранилища пользовательских настроек и необходимые файлы. Кроме того, большинство приложений .NET являются переносимыми по своему дизайну, но конечные пользователи ожидают следующих готовых установщиков - многие, кто даже не знает, что такое файловая система.
Оскар Дюверборн
Также можно отметить, что, хотя приложения предназначены для разделения настроек / библиотек / спецификаций в разных местах, это не очень распространенный обычай. Я очень часто нахожу настройки для различных приложений, хранящихся в файлах, в своих каталогах программ, и очень часто библиотеки, которые могут использоваться совместно, статически связаны в каталоге программ. Поскольку для программистов нет реальных преимуществ в том, чтобы делать что-то так или иначе, стимул придерживаться правил слабый, и разработка приложений на Диком Западе происходит :-). Кроме того, я думаю, что традиции сильны.
Даниэль Андерссон
GAC - это только второе пришествие ада DLL. Хорошая концепция, но в реальной жизни у вас возникает путаница, поскольку разные исполняемые файлы связываются с разными версиями одного и того же файла, а некоторые версии этих файлов могут иметь недостатки в безопасности. Это всемогущий беспорядок, если вам нужна безопасная среда. Теперь вам действительно нужно исправлять разные версии одного и того же файла, чтобы исправить одну и ту же дыру в безопасности. Ура! Следует отметить, что политика и обязательные перенаправления могут помочь, но это все равно, что сказать, что помощь группы помогает против открытых ран.
Стейн Осмул
12

Развертывание XCOPY было объявлено Microsoft , как на пути будущей пару лет назад. Еще ничего :)

Тем временем вас может заинтересовать платформа PortableApps.com.

Петр Доброгост
источник
7

Отличный вопрос, я задал похожий вопрос о переполнении стека некоторое время назад.

Часто кажется, что ответ «потому что так мы делали это в прошлом». Извините, но это не моет меня.

Несколько других сказали, что главная причина - реестр. Если вы говорите о драйвере устройства или каком-либо другом компоненте COM и т. Д., То да, это может быть необходимо, но не для приложений с графическим интерфейсом, таких как процессоры Word или электронные таблицы.

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

Инсталляторы часто также имеют много «знаний» о том, как работает приложение. Затем, когда приложение меняется, вам часто приходится обновлять и программу установки. Это классическая причина ошибок / проблем, которые я видел во время программирования.

Это все подходит для одного размера.

пепел
источник
6

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

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

На самом деле, мы, кажется, забыли, что те же самые люди, которые осуждали тиранию таких гигантов, как IBM, стали современными IBM ... Просто присмотритесь к деловой практике Microsoft, Apple и Adobe, чтобы назвать несколько и прямо сказать мне, что их ограничительные лицензии более благоприятны, чем деловые практики IBM, - тот же IBM, который своей открытостью фактически проложил путь к революции персональных компьютеров ...

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

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

Старый Верный
источник
5

Комбинация реестра и хранилища для каждого пользователя. Реестра является важной частью, особенно если ваше приложение COM основе (который требует регистрации, что происходит в реестре). Хранение на пользователя (конфигурации и т. Д.) Также является важным компонентом. Единственный хороший способ сделать это - хранить его в специально разработанных каталогах (см. « Изолированное хранилище» ).

Пересекать
источник
В точку. Как ОС может найти EXE или DLL для загрузки без фиксированного расположения? "Set oExcelApp = CreateObject (" EXCEL.APPLICATION ")" должен работать как-то.
Zan Lynx
4

Главным образом из-за реестра Windows - даже если ваши программы находятся в определенном каталоге, настройки часто хранятся в реестре.

Это также может быть связано с тем, что программа помещает файлы в другие каталоги на вашем компьютере, кроме каталога установки (например, system32)

Эрик Петроэль
источник
3

Одним из больших преимуществ для установщиков по сравнению с переносным типом установки Xcopy является самовосстановление.

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

Если приложение по какой-то причине ломается (что-то еще удаляет / заменяет файл, реестр поврежден, проблемы с диском, пользователь удаляет ярлык и т. Д.), То, если это «объявленный ярлык», установщик фактически проверяет файлы ключей и ключи при каждом запуске и заменяет, если их нет, или вы можете зайти в «Установка и удаление программ» и нажать «Восстановить» в приложении.

GAThrawn
источник
Почему единственное, о чем я могу думать, читая этот значок на рабочем столе Adobe Reader? Этот человек настолько безумно самовосстанавливающийся, что поражает воображение ^^
Оскар Дювеборн
2

Я думаю, что это частично связано с большим количеством ненужных приложений для Windows. Например, ключи реестра, данные пользователя (/ Users // AppData). Возможно, OSX просто справляется с этим лучше / по-другому.

Опять же, не исключено создание приложений, которые вы можете просто извлечь из архива - я всегда рад, когда это так.

Росс
источник
2

.Net Framework является платформой для включения этого типа функциональности, и в основном используются только установщики, потому что это то, к чему привыкли обычные пользователи. Таким же образом пользователи Mac привыкли копировать файлы в папку «Приложения».

Большинство установщиков просто расширяют файлы в папке Program Files и создают ярлыки. Это скорее пример того, что знают пользователи, и часто проще просто сохранить процесс одинаковым, даже если приложение переносимо.

BinaryMisfit
источник
2

Некоторые программы требуют, чтобы место установки находилось в реестре, другие могут иметь свои места, жестко запрограммированные в программе (это имело место для perl.exe).

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

Брэд Гилберт
источник
2

Многие приложения Windows должны использовать системные среды или службы, такие как SQL Server, IIS, WMI, домены безопасности, Active Directory и многие другие. Типичный пользователь может не знать, как их настроить, или даже не иметь к ним доступа.

Такие приложения, как Microsoft Office, не являются отдельными файлами; они содержат десятки файлов, исполняемых файлов, утилит, сервисов, шаблонов, плагинов, драйверов и так далее. Когда вы устанавливаете приложение, вы не можете просто перезаписать все, что использует новое приложение, оно должно соответствовать тому, что уже есть. Установщики Windows делают больше, чем просто копируют файлы, они могут запрашивать системную среду, запускать сценарии и устанавливать службы, а также настраивать компьютер так, как если бы он был администратором.

dbkk101 спрашивает, почему приложения Windows "не могут все просто ладить". Они могут, это то, для чего нужны установщики.

Dour High Arch
источник
2

С некоторыми программами установка глупа, но это гораздо больше, чем просто «перетаскивание файла в каталог программ».

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

Затем есть общие файлы - это особенно верно в мире Linux, хотя не так много в Windows IMO.

Что наиболее важно, некоторые программы должны быть настроены для машины, а некоторые (я полагаю, по крайней мере) пытаются оптимизировать на основе машины или, по крайней мере, это то, во что верит диалог Adobe.

Кроме того, я никогда не видел причин для установки на отдельный раздел. Вы склонны терять все значения реестра и настройки конфигурации. Плюс, я на самом деле предпочитаю эту потерю, потому что она уменьшает вздутие Windows.

wag2639
источник