Різниця між окремим виконуваним файлом та встановленим виконуваним файлом?


17

Принаймні, я помітив у Windows, що ви можете завантажити прямий, статично пов'язаний виконуваний файл і запустити його безпосередньо, або написати власну програму та виконати її (навіть динамічно), не встановлюючи її.

Це підводить мене до моєї основної суті ... яка мета процесу встановлення? Я маю на увазі, крім, можливо, реєстр Windows . Однак з метою практичності та використання можливо мати єдину незалежну автономну програму, яку можна запускати, зберігати на енергонезалежних сховищах та отримувати доступ до них через файлову систему будь-якого пристрою, на якому вона ввімкнена, та виконується в ОС. Тож яка велика справа у всьому цьому "встановити цей" бізнес, якщо багато чудових програм практично будь-якого масштабу можуть працювати бездоганно, не проходячи конфігурацію установки? Це трохи спантеличує мене, окрім бази даних чи інших систем конфігурації метаданих / доступу, яка реальна відмінність тут, якщо останній (встановлений виконуваний файл) виконує та працює так само, як і окремий?

Чи є тут різниця, про яку я не знаю про невстановлену програму та інстальовану програму?

PS: Це стосується не лише ОС Windows, а будь-яких, що реалізують подібну функцію.

Відповіді:


16

Існує кілька причин, чому програми стають інсталяторами, а не окремими виконуваними файлами:

Побоювання щодо розміру файлу

  • Програми з багатьма великими залежностями можуть вбудовувати веб-інсталятори, які завантажують залежності та розміщують їх у загальному місці, щоб ними можна було ділитися декількома програмами. Наприклад, DirectX - це дуже велика бібліотека. Якщо кожна окрема програма у вашій системі, яка залежить від DirectX, просто поєднала з нею весь час виконання DirectX, вона зайняла б трохи місця. Це може не мати значення у віці 4-х ТБ жорстких дисків, але врахуйте, що SSD є значно меншою ємністю, і вони вступають у звичайне використання ультрабуках, а деякі мають лише 64 Гб пам’яті. І звичайно, є багато інших спільних бібліотек, крім DirectX.

  • Програми, які є дуже великими та постійно оновлюються, найкраще поширюються у вигляді колекції безлічі невеликих файлів разом із запусковою програмою чи програмою оновлення, яка перевіряє Інтернет на оновлення, і якщо таке оновлення існує, завантажуйте лише потрібні зміни. Якщо всі великі програми були поставлені як єдиний монолітний виконуваний файл, дуже ймовірно, що процес виправлення вимагатиме повторної завантаження всього виконуваного файлу, оскільки виправлення виконуваного виконуваного файлу на диску майже неможливо через блокування файлів. Крім того, оскільки оновлювачу потрібно знати, де знаходяться його файли, він часто зберігає шлях до каталогу у відомій місцевості в реєстрі.

Побоювання користувачів

  • Установники для дуже великих програм, таких як Visual Studio та Microsoft Office, дозволяють користувачеві скасувати вибір певних функцій, якщо користувач знає, що вони ніколи їм не знадобляться. Це має 3 потенційні переваги: ​​це зменшує споживання дискового простору; це може скоротити час завантаження та споживання пропускної здатності, якщо інсталятор завантажувач веб-сторінок; і це може зменшити "захаращення" та "здуття" на машині користувача, менша кількість клавіш швидкого запуску / робочого столу, менше програм запуску тощо.

  • Інсталятори для складних програм часто постачаються з параметрами конфігурації, які користувач може налаштувати, використовуючи зручний графічний інтерфейс як частину інсталятора. Ознайомтеся, наприклад, з установниками MySQL або SQL Server, які можуть провести весь процес запуску та запуску сервера баз даних, перш ніж ви навіть натиснете «Готово» у програмі встановлення.

  • Установники можуть повідомити користувача про необхідну інформацію, наприклад, ліцензійні ключі, які потрібно ввести лише один раз. Це може спростити дизайн самої програми та зменшити кількість речей, які вона має робити, і перевірити, коли вона запускається. Це також призводить до впевненості у користувачеві, що після того, як програма буде успішно встановлена, вона повинна «просто працювати» - в програмі більше не буде «готів», які можуть затримати їх від використання.

Проблеми сумісності

  • Деякі програми суперечать іншим програмам. Це простий і невдалий факт інженерії програмного забезпечення. Перш ніж встановлювати програму, яка має конфлікти з іншими програмами, часто корисно спочатку перевірити систему, щоб перевірити, чи встановлена ​​несумісна програма. Потім користувач може отримувати попередження. Наприклад, у старих версіях VMware та VirtualBox існує дуже небезпечний потенціал несумісності, який спричинив за собою Синій екран смерті, оскільки одна програма намагатиметься використовувати спеціальну інструкцію процесора віртуалізації після того, як вона вже була зарезервована для користувача іншим продуктом . Якби ви просто надавали кінцевий продукт користувачеві без інсталятора, вам доведеться перевіряти наявність несумісних продуктів на кожному запуск вашої програми, що може уповільнити запуск програми.

  • Програми можуть залежати від інших системних компонентів, які можна встановити лише на загальносистемному рівні, а не на рівні користувача. Для установки цих спеціальних системних компонентів зазвичай потрібні адміністративні привілеї, і зазвичай потрібно запустити інсталятор.

Підвищені пільги та спеціальні послуги

  • Деякі програми залежать від змін в операційній системі щодо їх функціональності, і ці зміни неможливо легко здійснити без інсталятора, який би піклувався про них з адміністративними привілеями. Наприклад, програми, які встановлюють драйвери або модулі ядра, такі як Wireshark, не можуть простозапустіть, тому що вам абсолютно доведеться пересилати компоненти режиму ядра в окремі файли. В абсолютному випадку вам все одно доведеться, щоб користувач вручну розпакував архів, а потім запустив якийсь інсталятор для драйвера пристрою. Послуги - це ще один приклад того, що для встановлення потрібні адміністративні привілеї. Програмне забезпечення інсталятора особливо добре отримує права адміністратора на елегантний спосіб, не вимагаючи, щоб основна програма сама вимагала адміністраторських прав кожного разу, коли вона запускається (це в багатьох випадках буде зайвим впливом безпеки).

Виклавши всі ці причини, чому інсталятори корисні, ось кілька спостережень з іншого боку:

  • Багато програм, навіть ті, які доступні для завантаження лише як інсталятор, який вимагає привілеїв адміністратора, можуть бути примусово "розпаковані" від своїх інсталяторів і запускатися безпосередньо, не встановлюючи їх. Інші програми, особливо програми з відкритим кодом, перепаковуються в автономні виконувані файли PortableApps . Примітно, що деякі програми, розпаковуючись зі свого інсталятора, матимуть знижений функціонал, виявлятимуть помилки чи інші проблеми.

  • В інших операційних системах, окрім Windows, майже завжди можна просто завантажити (або компілювати) програми та запустити їх як звичайний користувач, не отримуючи root. Є кілька винятків щодо пакетів, які є основною частиною операційної системи, але для більшості програм користувача ви можете запускати його у своєму домашньому каталозі, не встановлюючи його на всій системі за допомогою менеджера пакунків. Windows - це особливий випадок, оскільки більшість настільних програм у Windows мають інсталятор, і зазвичай його неможливо інсталювати.

  • Навіть на інших платформах Windows програми, яким потрібна можливість завантаження модуля ядра, постачаються з якимось інсталятором, який компілює модуль ядра та встановлює його у потрібному каталозі. Ви також можете розраховувати на те, що програма інсталятора побачить, якщо програма є демоном, який буде запущений за допомогою сценарію системної служби, наприклад, в /etc/init.d. Цей тип "скороченої двійкової" є менш поширеним методом розповсюдження в GNU / Linux, проте більшість дистрибутивів Linux все ще надають більшість програмного забезпечення у вигляді встановлених пакетів, кожен з яких потребує встановлення кореневого доступу (доступу адміністратора).


Висновки

Ви запитали, навіщо нам потрібні інсталятори. Коротка відповідь полягає в тому, що ми цього не робимо - не строго кажучи. Є зникаюче кілька прикладів додатків , які не можуть , в принципі, бути згрупована в єдиний автономний виконуваний файл без будь - яких ресурсів, що не інсталятор і т.д. Навіть що - то так складно , як VMware Workstation може автоматично отримати права адміністратора, напишіть гипервизор модуль ядра з до файлу на диску та динамічно встановлюйте його при запуску програми та передайте всі його ресурси (зображення, звуки тощо), що входять у розділ даних виконуваного файлу.

Використовувати інсталятор чи ні - це вибір, який повинні зробити виробники програмного забезпечення. У використанні інсталятора є переваги та недоліки. Багато постачальників вирішують поширювати своє програмне забезпечення і як інсталятор, і як окремий двійковий файл, або принаймні як ZIP-файл, який можна просто розпакувати та запустити. Для програмного забезпечення, яке не потребує інсталятора, це дуже прагматичний шлях, який робить усіх щасливими. Зазвичай програмне забезпечення, яке не постачається в будь-якій іншій формі, ніж інсталятор, - це програмне забезпечення, яке вимагає адміністративних привілеїв, щоб встановити якийсь компонент самого себе, оскільки інсталятор є найелегантнішим способом отримання необхідних привілеїв.

Особисто мені здається, що інсталятори дуже дратують щоденну роботу, бо іноді мені хочеться запустити програму, коли у мене немає адміністративних прав на комп’ютері, який я використовую. У мене є чималий досвід розпакування встановників вручну, щоб витягнути програмні файли всередині, а потім змусити ці файли працювати правильно. Однак на моєму персональному ПК вдома, де я завжди маю доступ до адміністраторів, я вважаю, що інсталятори вигідні та зручні, тому що більшість інсталяторів дають мені корисні варіанти, як, наприклад, створити ярлик на робочому столі, що мені довелося б робити вручну, без нього.


Чудова відповідь, але ваше відкриття через DirectX та час виконання не має сенсу. По-перше, єдиний час виконання DirectX - це мова, якою вона написана сама по собі, а це - C.

@TomTurkey Гм ... що? Чому має значення, на якій мові написано? Звичайно, ви можете статично зв’язати будь-які компоненти DirectX, які вам потрібні, безпосередньо у свій виконуваний файл, але, як я вже сказав, це представляє проблему розміру файлу, якщо багато програм починають робити це з великими бібліотеками (наприклад, Qt 4.x працює близько 40 Мб ). Код має бути десь, і ви не можете просто припустити, що потрібна версія DirectX вже встановлена ​​в системі, або ви отримаєте помилку, коли хтось відкриє вашу програму на Windows XP SP2, який не був виправлений віків.
allquixotic

4
О, я думаю, ви мене зрозуміли неправильно - у своїй відповіді я не говорив про встановлення DirectX ; Я говорив про встановлення програми, яка залежить від DirectX. Щоб задовольнити цю залежність, ви можете або компілювати DirectX безпосередньо у свою програму, тим самим збільшуючи витрату дискового простору, або ви можете зв’язати невеликий додаток у своєму інсталяторі, який перевіряє, чи встановлені у вас відповідні умови виконання DirectX, а якщо ні, завантажуйте їх та розміщує їх у централізованому системному розташуванні. Останнє набагато ефективніше з точки зору місця на диску та розміру завантаження.
allquixotic

3
@allquixotic Також ліцензування. Іноді бібліотека може не мати ліцензії на перерозподіл незалежно від її інсталятора. DirectX може потрапити в категорію, я не впевнений. Я думаю, що це .NET Framework. Це не технічне обмеження, а юридичне. (Рамка .NET має додаткові технічні обмеження. Однак вона досить щільно інтегрована в ОС.)
Боб

1
буп . Звук схвального коментаря. У моїй голові.
allquixotic

3

Процес установки враховує ці елементи:

  1. чи встановлена ​​у вас бібліотека (api), наприклад, .net Framework Framework чи пряма X.

  2. Встановіть кілька додаткових системних файлів DLL в системну папку. Якщо системна папка вже містить ці файли (та сама версія), ігноруйте цей крок. Таким чином, вам не потрібно кілька копій одних і тих же файлів DLL.

  3. Встановіть ярлики у меню "Пуск" або на робочому столі, щоб швидко запустити програму.

  4. Як ви вже говорили, модифікація реєстру. Цей крок насправді можна зробити, коли додаток вперше виконується на цьому комп’ютері, тому це не зайве значення.

  5. Дуже важливо: чи вбудовувати програмне забезпечення (наприклад, робочий стіл Google або панель Yahoo! у ваш IE). Це шлях безлічі незалежних програм, що створюють дохід для розробника. Не забувайте про це, якщо ви використовуєте безкоштовне програмне забезпечення.

Оскільки ми розглядаємо "виконуваний" додаток, нам не потрібно обговорювати ті кроки, які можуть встановити надбудову IE або пов’язані з цим речі.


3

Автономна програма не має зовнішніх залежностей.

Це не повинен бути лише .exe файл, він може мати супровідні бібліотеки та файли даних: Розпакуйте архів у папку та запустіть виконуваний файл. Якщо ви просто розпакуйте архів, до меню "Пуск" не буде додано ярликів, отже, вам доведеться перейти до папки, де знаходиться розпакована програма, і запустити її звідти, або вручну створити ярлик для неї в меню "Пуск". Багатьом користувачам комп'ютерів важко.

Простіше у використанні

Інсталятор орієнтує користувачів на процес встановлення. Ви завантажуєте інсталятор, .exe або .msi (попередній варіант кращий для непросунутих користувачів) та запускаєте його. Він підбирає інсталяційну папку, зазвичай Program Files, копіює файли, створює ярлик у меню "Пуск". Ви закінчили: у більшості випадків ви просто натискаєте кнопку Далі кілька разів.

Потім перейдіть до меню «Пуск» і запустіть програму. Деякі програми встановлення надають можливість запустити програму після завершення встановлення.

Якщо програма відкриває файли або документи певного типу, інсталятор реєструє їх у оболонці. Так що ви можете натиснути файл, щоб відкрити його.

Ліцензійна угода

Багато програм, як комерційних, так і безкоштовних, вимагають прийняти ліцензійну угоду, перш ніж ви зможете користуватися їх додатком. Установка не триває, поки ви не підтвердите, що ви погоджуєтесь з умовами ліцензії. Навіть якщо ви не прочитали ліцензію, ви погодились на неї.

Залежності

Іноді недостатньо просто скопіювати виконувані файли. Програми часто використовують спільні компоненти або спеціальні бібліотеки виконання. Наприклад, для запуску програми, написаної для .Net, слід встановити. навіть Visual C ++, якщо він не є статично пов'язаним, повинен бути встановлений. Інсталятор дбає про те, щоб всі залежності були задоволені.

Якщо програма складається з декількох файлів .exe та / або .dll, динамічне посилання на час виконання Visual C ++ зменшує простір на диску. Якщо .exe та .dll статично пов'язані, час виконання дублюється у кожному файлі.

Ліцензійні умови бібліотеки можуть не дозволяти статичного посилання.

Безпека

Якщо під час виконання виявлена ​​вразливість, вона може оновлюватися окремо від програми. Оновлення до .Net та Visual C ++ виконуються автоматично через оновлення Windows.

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

Установка в Program Filesтакож забезпечує більш безпечне середовище: файли там не можуть бути змінені або видалені без прав адміністратора.

Реєстр

Багато програм Windows покладаються на записи в реєстрі. Якщо програма використовує COM, всі об'єкти повинні бути зареєстровані, інакше програма не зможе створити потрібний об'єкт і не запуститься.


1
+1 для оновлень безпеки спільних компонентів - я не думав це писати у своїй відповіді.
allquixotic

0

Коротка відповідь: автономний exe не вимагає, щоб на комп'ютері було встановлено бібліотеки, і не потрібні записи реєстру чи інші компоненти.

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

У багатьох випадках через Universal Extractor (неофіційне оновлення: тут ) ви можете витягнути вміст інсталятора та запустити програму без адміністративних привілей у Windows. Програми встановлення MSI можуть бути розпаковані меншими розмірами .

У більшості інших операційних систем усі програми можна запускати без root-адміністраторів, через специфічні для користувача "bin", "lib" та інші каталоги в домашньому каталозі. Особисто я більшу частину часу зневажаю інсталяторів, тому що вони ускладнюють використання програм із адміністративними привілеями, коли у мене їх немає. Але вони упаковані таким чином великими компаніями, щоб спростити процес для середнього кінцевого споживача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.