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

2890
Tom

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

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

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

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

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

12 ответов на вопрос

33
DavidWhitney

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

Модель 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 - это «простой случай» и, безусловно, не подходит для всего.

Хорошее, простое объяснение! alex 14 лет назад 1
Еще одна важная причина для установщиков (особенно таких, как Office) заключается в том, что ни один пользователь не может влиять на другого пользователя в той же системе, если он не является администратором. В Office 2007 весом около 500 МБ, если пользователь хочет использовать его, он должен иметь свою собственную локальную копию. Это будет 1,5 ГБ для 3 пользователей в одной системе! Google Chrome устанавливается в локальный каталог пользователей, поэтому, если у вас есть 10 пользователей, у которых у всех есть Chrome, это 10 разных версий, которые необходимо обновить и поддерживать. Очевидно, что у каждого пользователя есть свои плюсы и минусы в сравнении с центральным развертыванием. Joshua 14 лет назад 6
Некоторые приложения, такие как Photoshop (по крайней мере, до CS4), можно просто скопировать, а при запуске - создать хранилища пользовательских настроек и необходимые файлы. Кроме того, большинство приложений .NET являются переносимыми по своему дизайну, но конечные пользователи ожидают следующих готовых установщиков - многие, кто даже не знает, что такое файловая система. Oskar Duveborn 13 лет назад 1
Также можно отметить, что, хотя приложения _meant_ для разделения настроек / библиотек / спецификаций в разных местах, это не очень распространенный обычай. Я очень часто нахожу настройки для различных приложений, хранящихся в файлах, в своих каталогах программ, и очень часто библиотеки, которые могут использоваться совместно, статически связаны в каталоге программ. Поскольку для программистов нет реальных преимуществ в том, чтобы делать что-то одно или другое, стимул придерживаться правил слабый, и разработка приложений на Диком Западе происходит :-). Кроме того, я думаю, что традиции сильны. Daniel Andersson 13 лет назад 0
GAC - это всего лишь второе пришествие ада DLL. Хорошая концепция, но в реальной жизни у вас возникает путаница, поскольку разные исполняемые файлы связываются с разными версиями одного и того же файла, и некоторые версии этих файлов могут иметь недостатки в безопасности. Это всемогущий беспорядок, если вам нужна безопасная среда. Теперь вам действительно нужно исправлять разные версии одного и того же файла, чтобы исправить одну и ту же дыру в безопасности. Ура! Следует отметить, что политика и обязательные перенаправления могут помочь, но это все равно, что сказать, что групповая помощь помогает против открытых ран. Stein Åsmul 12 лет назад 0
12
Piotr Dobrogost

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

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

7
Ash

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

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

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

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

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

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

6

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

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

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

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

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

5
C. Ross

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

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

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

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

3
GAThrawn

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

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

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

Почему единственное, о чем я могу думать, читая эту иконку Adobe Reader на рабочем столе? То, что он настолько безумно самовосстанавливающийся, уму непостижимо ^^ Oskar Duveborn 13 лет назад 0
2
Ross

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

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

2
BinaryMisfit

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

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

2
Brad Gilbert

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

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