Корпоративні переваги використання файлів MSI


57

Які переваги використання .msi-файлів над звичайними файлами setup.exe?

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

Які функції має msiexec.exe, що робить розгортання простішим, ніж використання сценаріїв setup.exe?

Якісь поради чи підказки при розгортанні .msi-додатків?

Відповіді:


42

Лише кілька переваг:

  • Можна рекламувати (щоб могла відбуватися установка на вимогу).
  • Як і в рекламі, функції можна встановити, як тільки користувач намагається ними користуватися.
  • Управління державою підтримується, тому інсталятор Windows пропонує спосіб адміністраторам бачити, чи встановлена ​​програма на комп'ютері.
  • Можливість відкотити, якщо установка не вдалася.

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

Для отримання додаткової інформації про маніпуляції з установками MSI введіть msiexecдіалогове вікно Запуск.


3
+1 - я не бачив цього ще у09 році (я думаю, що сайт, можливо, ще був у бета-версії), але я люблю "... я майже завжди вважаю себе жахливим ...". Я повністю відчуваю це (хоча, якщо чесно, деякі "MSI" змушують мене так само ... Java ... Google Chrome ...).
Еван Андерсон

74

ОНОВЛЕННЯ, липень 2018 року . На стаціонарному потоці доступний надзвичайно стислий підсумок наведеної нижче інформації: Основні переваги MSI ( "executive summary"- різновиди).


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

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

Я також хочу запропонувати цю статтю MSDN як добре прочитану: Установник Windows: Переваги та реалізація для системних адміністраторів .


Стандартизація:

Одним словом, MSI - це і про стандартизацію, і про боротьбу з " запахами розгортання " застарілих технологій інсталятора. Ціла колекція поганих конструкцій архітектури установки, що викликала неодноразові проблеми розгортання.

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

Ці функції лише в значній мірі покращують попередні технології встановлення, які видаляли випадково та безшумно працювали - можливо, найважливіші функції корпоративного розгортання разом із надійним віддаленим управлінням пакетами через Active Directory або спеціальні засоби віддаленого адміністрування, такі як Microsoft SCCM (раніше SMS), IBM Tivoli , CA Unicenter та подібні.

Хтось дублював попередню версію цієї відповіді . Може, швидше прочитати?


Спадкові інсталятори "Розгортання запахів"

MSI активно відлякує застарілі запахи розгортання дизайном. Ці теми обговорюються в наступних розділах нижче, але як короткий перелік, найбільш впізнавані проблеми зі застарілими установниками та старішими технологіями розгортання були:

  • 1) вони іноді знижені і перезаписати загальні і версіоніруются файли з невеликим занепокоєнням для длл-ад , в результаті
  • 2) часто не було належної програми видалення, що постачається разом із інсталятором, або вона не завершилася належним чином і надійно - особливо, якщо працювати безшумно. Це дуже велике питання для корпоративного управління ДП
  • 3) безшумна установка рідко підтримувалася належним чином. Надійність була поганою, і часто доводилося записувати запуск встановлення з вибором діалогового вікна, і це не справлялося з несподіваними умовами, такими як діалоги помилок або діалоги попередження, які не були записані в початковому виконанні
  • 4) інсталятор не записував, що встановлено, і, отже, не було автоматичного способу перевірки файлів на диску, щоб перевірити, чи є вони такими версіями, які інсталятор встановив спочатку
  • 5) вони містили непередбачувані, ненадійні та нестандартні параметри командного рядка для виконуваної установки
  • 6) випливаючи з нестандартного командного рядка та відсутності стандартів, було важко налаштувати інсталяторів під конкретні значення, необхідні для корпоративного розгортання надійним та передбачуваним способом
  • 7) звичайні користувачі не могли запустити ці встановлення, і їм часто доводилося возитися з тимчасовими правами адміністратора (використовуйте "запустити як", якщо цього було достатньо, або увійдіть як адміністратор, установіть, а потім вийдіть із системи - це повне вхід та генерація профілю іноді потрібно, щоб установка завершилася)
  • 8) setup.exe установник часто не повертає правильний код помилки або код успіху, а іноді він буде негайно вийти і удар іншого процесу , який би закінчити установку , що робить його важко визначити , якщо установка була завершена - особливо з допомогою пакета файл
  • 9) більшість файлів setup.exe дозволяють витягувати файли, але не надійним, передбачуваним способом - вам, як правило, довелося витратити багато часу на пошук потрібних комутаторів, щоб це зробити
  • 10) в деяких інструментах лісозаготівлі були поганими та досить випадковими. Налагодження з файлами журналів рідко створювало чіткість, але трохи допомогло
  • 11) не було прозорості в тому, що робив інсталятор, і немає або ненадійний відкат для скасування змін після невдалої установки
  • 12) не було ніякого стандарт промисловості способу для розгортання загальних компонентів у час виконання , чи були вони компоненти операційної системи, компонентів сторонніх розробників або самостійно

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

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


Переваги MSI - Короткий підсумок

У простій мові дійсно важливі переваги MSI є (в довільному порядку):

  • 1) видалення завжди доступне для кожного пакета, якщо його активно не вимкнено
  • 2) це те саме для ведення журналів , що є чудовим та стандартизованим, хоча багатослівним (такі інструменти, як WiLogUtl.exe можна використовувати для аналізу файлів журналу)
  • 3) те, що робить файл MSI, є здебільшого (напів-) прозорим або "контрольованим". Виняток становлять власні дії - (див. Розділ прозорості нижче)
  • 4) налаштування налаштувань здійснюється стандартизованим способом ( перетворює )
  • 5) немає необхідності возитися з тимчасовими правами адміністратора, оскільки установка запускається підвищеною рекламою Active Directory, груповою політикою або віддаленим адмініструванням. Деякі кваліфікації тут. Також дивіться цей знімок екрана з редактора об’єктів групової політики.
  • 6) безшумна установка / видалення через інструменти управління або використання msiexec.exe працює добре
  • 7) існує повна підтримка відкату для невдалої установки. Якщо ви встановите на коробку вручну, вам потрібно знати деякі кваліфікації .
  • 8) файл MSI піддається як інспекції, так і валідації на узгодженість та логічну валідність, оскільки вони відповідають схемі бази даних ( див. Приклад перевірки )
  • 9) оновлення - це стандартизовані типи, хоча складні та часто схильні до недосвідчених пакувальників
  • 10) витяг файлів з MSI є вбудованою функцією (перевірити пов'язану статтю для хорошого короткого огляду)
  • 11) командний рядок інсталятора Windows, msiexec.exe , має дуже тонкий контроль над тим, як слід виконувати послідовність інсталяції, і всі параметри працюють із усіма стандартами MSI-файлами (встановити рівень журналу, запускати мовчки / інтерактивно / напів тихо , встановити параметри встановлення, застосувати перетворення тощо ...).
  • 12) модулі злиття - це механізм MSI для доставки спільних файлів з декількома пакетами MSI. Це витратний модуль або пакет логіки встановлення, який можна об'єднати з будь-яким пакетом MSI під час компіляції. Wix розширив і вдосконалив цю концепцію із використанням файлів Wix, включаючи файли - концепція, яка, на мою думку, перевершує модулі злиття - особливо для ваших власних файлів (тобто не файлів ОС)
  • 13) сам механізм інсталятора Windows має механізм запобігання перезапису версійних або модифікованих файлів при встановленні. Це контролюється досить складною логікою заміни файлів . Хоча ефективна і хороша, логіка може стати проблемою сама по собі, оскільки багато розробників стикаються з проблемою неможливості перезаписати свої змінені конфігураційні файли під час оновлення. Вирішення цих проблем, як правило, є незначними змінами в дизайні додатків, щоб уникнути поширених анти-шаблонів розгортання, хоча це велика дискусія.

У реальному світі я знайшов менш вдалі аспекти, включаючи виправлення (дуже складний), MSI-GUI (звичайні функції, досить складні, не вистачає гнучкості), стійкість (може призвести до важкої налагодження повторюваних проблем із самостійним ремонтом ) та загальної складності роботи з технологією для початківців (висока складність основних операцій часом - наприклад, оновлення, графічний інтерфейс та безліч взаємодіючих деталей спричиняють несподівані результати тощо). Швидкість процесу встановлення також значно сповільнилася через збільшення накладних витрат MSI. Див. Кілька порад щодо підвищення швидкості встановлення MSI .

У решті тексту детальніше розглядається деякі з цих аспектів MSI.


Прозорість (відкритий формат встановлення)

Файл MSI - це, по суті, позбавлений бази даних SQL-сервера, що зберігається як COM-структурований файл зберігання - по суті це файлова система у файлі або набір потоків даних. Це тип файлу, який використовується в документах Microsoft Office , і він дає стандартний формат, який можна переглянути і перевірити - величезна проблема для великих корпорацій.

За винятком складених спеціальних дій, файл MSI - це біле поле . Якщо налаштування змінить щось божевільне, наприклад, загальносистемні налаштування мережі, ви можете побачити це за допомогою відповідних інструментів . Помітним винятком є складені спеціальні дії - це чорний ящик . Вимоги логотипу Windows вимагають анотації користувальницьких дій, щоб пояснити, що вони роблять, але це розробники налаштувань часто ігнорують. Сподіваємось, поява Wix покращить це.

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

Налаштування (перетворення)

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

msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"

Швидке пояснення параметра:

/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.

Управління та звітність

Windows Installer підтримує вичерпну базу даних усіх елементів, які продукт встановив у реєстрі ( HKEY_CLASSES_ROOT \ Installer - ніколи тут нічого не змінюйте безпосередньо! Це стосується і експертів).

Ви можете достовірно визначити, чи встановлено продукт, які функції були встановлені та які версії файлів були встановлені. Крім того, ви можете отримати список будь-яких патчів, застосованих до базового продукту, якщо такі є. Ви можете отримати доступ до цієї бази даних за допомогою API, що підтримує Win32, COM або .NET, використовуючи різні інструменти сценаріїв, конфігурації та адміністрування, такі як Microsoft SCCM , IBM Tivoli , CA Unicenter тощо ...

Безпека (тимчасові підвищені права)

MSI також включає принципи "підвищених прав", що дозволяє обмеженому користувачеві запускати інсталяцію продукту, для якого потрібні права адміністратора. Це частина " функції реклами ", яка дозволяє адміністратору робити доступними інсталятори для користувачів, фактично не встановлюючи їх на всіх робочих станціях. Сам інсталятор повинен бути належним чином зареєстрований на декількох основних облікових записах, щоб ця концепція підвищених прав працювала правильно. Користувачі можуть самі запускати інсталяцію продукту, або інсталяція може контролюватися спеціальною системою розгортання, такою як SCCM, Tivoli, Unicenter (зазвичай більші компанії). Не потрібно возитися з тимчасовими правами адміністратора, щоб налагодити роботу що часто трапляється із застарілими інсталяторами.

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

Перевірка

Файли MSI можна перевірити за допомогою правил перевірки, щоб переконатися, що вони відповідають ряду правил внутрішньої узгодженості (згаданих як ICE). Корпорації можуть створювати власні чеки ДВС для виконання спеціальних корпоративних правил та вимог. Це дуже допомагає із забезпеченням якості. Причина валідації можлива, обумовлена ​​самореференційним характером реляційних баз даних та відповідною схемою бази даних. База даних повинна бути внутрішньо узгодженою та сумісною зі своєю власною схемою щодо зовнішніх ключів, типів даних, ширини поля, версії схеми тощо ... Перевірка також виходить за рамки цього і здатна виявляти справжні логічні недоліки та помилки в пакеті , а не лише вади форматування та типу. Наприклад, він може виявити файли або типи файлів, які розгортаються до помилкових цільових пунктів призначення.

Еластичність (саморемонт)

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

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

Відкат

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

Спеціальні дії повинні реалізувати власну підтримку відкату для відповідності логотипу Windows. Це часто ігнорується, але передбачає створення другої спеціальної дії для скасування змін, внесених основною спеціальною дією.

Відкат забезпечує те, що робоча станція залишиться в стабільному стані, навіть якщо встановлення не вдалося. Фактичний сценарій відкоту зберігається в прихованій папці безпосередньо на системному диску - взагалі C: \ Config.Msi , і він містить файли з розширеннями .RBS і .RBF - Відкат файлів сценаріїв . Оскільки ви можете очікувати, що погано розроблені файли MSI можуть порушити вбудовані функції Windows тут, докладнішу інформацію див. У моїй іншій публікації в цій темі.

Є способи відключити відкат і пришвидшити встановлення. Загалом не рекомендується, але ось деталі щодо властивості MSIFASTINSTALL та DISABLEROLLBACK . Це складна функція, але ось короткий огляд відката .

Виправлення та оновлення

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

У суб'єктивному перегляді виправлення добре працює для 2 основних застосувань : 1 ) невеликих виправлень для поставлених продуктів та 2 ) виправлення встановленого продукту для виправлення його несправної послідовності видалення, яка не дозволяє видалити продукти при видаленні.

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

Ведення журналу (дійсно багатослівний)

Windows Installer пропонує стандартизовану функцію ведення журналу, яка значно перевершує попередні втілення, хоча майже надмірно багатослівна. Файли журналів можна розшифрувати за допомогою аналізаторів журналів , а користувацькі рівні журналів можна використовувати для усунення генерування занадто великих файлів журналів із непотрібною інформацією. Для налагодження вкрай корисний багатослівний журнал. Дивіться у блозі Rob Mensching про гарний ручний спосіб прочитати файл журналу MSI (по суті ви шукаєте " значення 3 " у файлі журналу). Ось зразок командного рядка, який виконує багатослівний журнал:

msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"

Ця стаття Роберта Макдональда з команди інсталятора Windows дуже рекомендується як практичний погляд на журнал MSI: Як інтерпретувати журнали інсталятора Windows .


Висновок

Не все добре про інсталятор Windows . Його складність часом може бути збитковою , але для великих корпорацій файли MSI значно перевершують будь-яку іншу форму розгортання, якщо враховувати перелік переваг вище.

Нова парадигма інсталятора (величезний оператор SQL)

Для розуміння нової " парадигми " важливо розуміти, що MSI призначений як декларативний опис того, що буде відбуватися в цільовій системі, а не фіксований послідовність подій. Я думаю, ви можете вважати це величезним SQL-висловлюванням . Наприклад, ви оголошуєте елементи, які потрібно додати або змінити у файл INI. По мірі запуску установки відстежуються зміни, і відкат доступний, щоб зміни можна було повернути, якщо установка не вдалася. Це дійсно працює як " автоматичне " і є надійним при правильному виконанні.

Спеціальні дії (звичайні підозрювані)

Для досвідчених розробників MSI це великий головний біль, коли люди бачать, що люди покладаються на складні, ненадійні спеціальні дії для функціональності, які краще реалізуються за допомогою вбудованих функцій MSI. Значна частка всіх помилок MSI та проблем з відкатом викликається помилковими спеціальними діями, а більшість інших помилок викликані помилковим використанням дизайну MSI (див. Окрему відповідь для переліку поширених помилок MSI).

Окрім вбудованих функцій MSI, тепер все нові та інші користувацькі функціональні можливості доступні через нові рамки, такі як Wix - спосіб XML для компіляції файлів MSI, тому для більшості операцій все менше потребує складної власної логіки дій.

MSI має повну підтримку для злиття налаштувань файлів ini, шрифтів, змінних середовища, ключів реєстру, інформації про COM, ярлики, розширення файлів, умови запуску, встановлення GAC, ODBC тощо ...

WIX йде далі з підтримкою дуже розширених функцій, таких як розширення SQL-сервера, встановлення та конфігурація IIS, лічильники продуктивності, перевірка DirectX та інші завдання, пов’язані з іграми, генерація нативного зображення .NET, COM +, драйвери, правила брандмауера, розширення PowerShell, закриття додатків, управління користувачами, групами, акціями та багато іншого. Дещо залучено до вирішення, але набагато надійніше, ніж ваші власні власні дії.

Уникайте спеціальних дій будь-якою ціною, якщо це можливо

Для того, щоб спробувати поставити його в перспективі: ці вбудовані і готові рішення будуть зроблені кращими розгортанням наявних експертами , і вони проходять тисячі, десятки тисяч або , можливо , навіть мільйони користувачів (для вбудованого матеріалу в MSI себе). Ви справді думаєте, що можете краще зробити власні власні дії? Використання спеціальної дії має бути рідкісною подією, і вона повинна бути абсолютно необхідною для досягнення чогось унікального для встановленого продукту . І ви також маєте написати належну підтримку відкату, що дуже пов'язано.

Написання власної дії майже завжди є помилкою , але є справжні випадки, коли вам також потрібна гнучкість. Як завжди, важливо добре підібрати свої битви. Спочатку це може бути цікавим завданням, але ви, швидше за все, зіткнетеся з багатьма несподіваними проблемами і витратите багато дорогого часу. Я маю на увазі це дуже серйозно. Я сам написав набір спеціальних дій C ++ для корпоративного використання (щоб усунути схильні до помилок VBScript користувальницькі дії) - це не прогулянка по парку, і хоча кодування може бути не найскладнішим у світі, налагодження та тестування та підключення до фактичного файлу MSI не відрізняється від надзвичайної участі. Деякий час досліджуючи, які готові варіанти доступні, швидше за все, ви заощадите тижні роботи з розробки та отримаєте набагато більшу надійність розгортання.

Використовуйте послідовність запуску програми

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

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

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

Складність налаштування

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

WiX (найкраще рішення MSI для деяких цілей)

Прочитайте це швидке введення WiX для опису нового способу компіляції файлів MSI на основі XML. Текстові вихідні файли забезпечують набагато кращий контроль над джерелами, ніж раніше. Це безкоштовний інструментарій з відкритим кодом, який дуже рекомендується .

NB : Побачте інше місце в потоці для швидкого усунення розповсюджених проблем із дизайном файлів MSI - це дуже неповно, але його варто прочитати. Я не хотів додати це до цієї відповіді, оскільки це не пов'язане на 100%, але для використання в реальному світі це важлива тема.


Деякі основні дані MSI для sys-admins:

(вибачте за безсоромне "просування" - це для легкого доступу та пошуку)

Ось лише декілька посилань на теми, які можуть бути корисними системним адміністраторам у їх спробах контролювати розгортання у своїх мережах:

Спеціальні теми щодо:

Концептуальні теми / найкраща практика:


24

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


Типові проблеми та вади дизайну, які спостерігаються в пакетах MSI

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

Технічні деталі MSI дуже складні . На базовому рівні мова йде про декомпозицію ваших файлів та налаштувань реєстру на компоненти (атомна установка) та функції (вибрані користувачем частини програми для встановлення, наприклад функцію словника). Існує ряд правил найкращої практики для розбиття компонентів, і помилок у файлах MSI тут багато. Ці помилки, як правило, обробляються шляхом стандартизації використання "великих оновлень".

Фактична установка виконується в ряді інсталяційних послідовностей, у деяких з підвищеними правами . Усі ці речі визначені в таблицях баз даних, і саме тут MSI страшенно складно зрозуміти і мати справу з ними. Поширення по послідовності встановлення - це стандартні та власні дії. Стандартні дії розроблені корпорацією Майкрософт та повинні відбуватися (послідовність може іноді змінюватись). Спеціальні дії доступні постачальникам для виконання власної логіки, не охопленої самою MSI. Вони можуть бути у сценарії або у складеному вигляді. Спеціальні дії можуть бути негайними (виконуватись одразу, не слід змінювати систему, але часто це робити) або відкладатись (записується у сценарій виконання, який потім виконується як транзакція і, отже, підтримує відкат).

Типові помилки в MSI є (не в певному порядку - і справді подаються як справжній безлад):

  • помилки створення компонентів (не дотримуючись кращої практики). Це може спричинити проблеми з виправленням та оновленнями з таємничими симптомами, такими як відсутні файли та налаштування або патчі, які вибухають безглуздими помилками. Для надпрощення слід використовувати один файл на компонент, якщо кількість файлів не величезна.
  • проблеми з оновленням, пов’язаними з перезаписом або скиданням даних користувачів. Детальніше див. Нижче.
  • неправильне планування користувацьких дій поза "транзакційним секцією" послідовностей установки або власні дії неправильного типу розміщені неправильно. Це часто призводить до збою дій (відсутність підвищених прав) при віддаленому запуску через системи розгортання, а відкат ефективно скалічений, оскільки відкочуються лише трансакційні дії. Транзакція інсталятора Windows (фіксація транзакції бази даних) працює між стандартними діями InstallInitialize та InstallFinalize в основній послідовності встановлення та працює з підвищеними правами . Усі зміни в системі мають відбутися в цій транзакції - все інше є помилковим (але, на жаль, досить поширеним).
  • використання спеціальних дій у режимі негайного режиму для внесення змін у систему поза трансакційною послідовністю встановлення . Це порушує підтримку відкату і, як правило, викликає помилки безпеки, оскільки користувацькі дії в режимі негайного режиму не виконуються з підвищеними правами користувача, незалежно від того, де вони розміщені в послідовностях встановлення.
  • помилкові конструкції, які викликають повторювані цикли саморемонту без очевидних причин. Ось ще одна стаття на цю тему від installsite.org
  • спеціальні дії , які не підкоряються придушенню графічного інтерфейсу в режимі встановлення без нагляду, можуть відображати модальні діалогові вікна, які призводять до повного виходу з експлуатації при безшумному виконанні. Ця проблема разом із загальною різницею між безшумним режимом та інтерактивним режимом описана тут більш докладно (дещо багатослівна та довгомоторна): Видалення з Панелі управління відрізняється від Видалити з .msi
  • деякі власні дії в помилково створених пакетах вставляються лише в послідовності інтерфейсу користувача . Це призводить до того, що вони не запускаються в беззвучному режимі установки. Це серйозно для корпоративного впровадження, оскільки тиха установка використовується тут майже виключно. Ця проблема також може вплинути на видалення, тобто вам доведеться інтерактивно запустити видалення для видалення, щоб забезпечити виконання всіх спеціальних дій очищення. Знову дивіться посилання в попередній точці пункту для більш детального опису рівнів інтерфейсу користувача.
  • інсталяція містить файли, які не призначені для розгортання в тому місці, в яке вони встановлюються. Зазвичай системні файли, які повинні бути встановлені поруч у папці збирання winxs.
  • повільна швидкість установки - ще одна «проблема», про яку багато повідомляють у MSI. Ось кілька порад з цього питання . Загалом у Windows Installer є досить великі накладні витрати через великі вимоги до реєстрації реєстру для того, що встановлюється.
  • перезапис спеціалізованої інформації або спільних файлів даних . Це може статися, якщо файл INI встановлений через таблицю File, а не таблицю IniFile, наприклад. В останньому випадку це трактується як "транзакція зміни", в першому випадку це операція по заміні файлів, що, як правило, неправильно, якщо ваш файл INI не має нестандартного форматування або великі розділи коментарів, які ви хочете розгорнути разом із вашим файлом (загальне для певних інструменти для розробників).
  • що складні правила для файлу перезапису можуть привести файли будуть перезаписані випадково, або не оновлюється взагалі - це класичне питання MSI. Перегляньте цю статтю, як можна змусити перезаписати файл, який не оновиться . Правила можна трохи змінити за допомогою спеціальних налаштувань властивості REINSTALLMODE, встановлених на рівні командного рядка msiexec.exe (перезаписати старіші версії, перезаписати рівні версії, перезаписати будь-яку версію тощо), і вони працюватимуть по-різному для файлів даних та версій файлів. Деталі в SDK . Розуміння цього є критично важливим, і це дизайн часто нахмурився навіть тоді, коли його розуміють.
  • Самореєстрація файлів COM під час встановлення може викликати попередження про безпеку або викликати проблеми різними способами. Перевірте цю статтю: Самореєстрація вважається шкідливою .
  • Проблема з проблемою заміни файлу - це випадок, коли основна оновлення (яка видаляє та перевстановлює продукт) видаляє модифіковані файли та перевстановлює версії за замовчуванням. У цих випадках вміст виглядає поверненим або перезаписаним, коли фактично його спочатку видалили, а потім знову встановили.
  • служби, що працюють із користувацькими обліковими записами користувачів, можуть втратити свої облікові дані під час основних сценаріїв оновлення, а також файл налаштувань (схоже) повернутися до замовчування (вони справді були видалені та перевстановлені). Просто для запису: на мою думку, служби, що працюють з обліковими записами користувачів, в першу чергу є вадою дизайну.
  • загальнодоступні властивості не передаються належним чином від клієнта до серверного процесу, запобігаючи виконанню спеціальних дій, як очікувалося. Це включає оновлення властивості SecureCustomActionProperties.
  • Деякі програми не можуть працювати належним чином для інших користувачів, ніж той, який встановив інсталяцію спочатку. Це серйозна помилка в дизайні, але вона може бути виправлена ​​досвідченими пакувальниками програм, використовуючи самолікування або ActiveSetup для додавання ключів реєстру HKCU та файлів користувача . Це досить складна тема, і для роботи може знадобитися трохи чорного мистецтва. Для запису: справжнє рішення, на мою думку, полягає в тому, щоб змінити саму програму, щоб мати можливість ініціалізувати всі налаштування кожного користувача на основі налаштувань за замовчуванням та шаблонів, скопійованих з місця розташування на машині або на основі внутрішніх значень за замовчуванням програми (з вихідний код).
  • Деякі файли MSI псують захист встановлених файлів , встановлюючи повні права читання / запису для не адміністраторів тут, там і скрізь. Інший раз програма перестає працювати на новіших версіях Windows через відсутність дозволів. Пакувальники програм стикаються з аналізом спеціального дозволу програми досить часто. Зазвичай потрібно додаткове дозвіл у HKLM або десь у% ProgramFiles%
  • Деякі установки Installshield ще в той же час намагаються підключитися до Інтернету під час встановлення. Це жахливо для корпоративних сценаріїв розгортання, коли розгортання жорстко контролюється, і інсталятор ніколи не дозволить завантажувати новий вміст безпосередньо з Інтернету.
  • Ще одна проблема з мережею - це коли налаштування намагаються показати графічний інтерфейс, де люди вводять дані, які перевіряються через Інтернет під час їх встановлення, або просто для показу живого контенту зі свого веб-сайту. Зазвичай це адреси електронної пошти, контактні дані, ліцензійні ключі тощо. З'єднання може зникнути повністю з багатьох причин, часто через відсутність конфігурації проксі-сервера в корпоративних середовищах (немає прямого підключення до Інтернету, увесь Інтернет-трафік направляється через певний кеш-сервер, і кожен процес повинен надати облікові дані, щоб пройти через брандмауер) . Ось стаття про небезпеку підтвердження ліцензій за допомогою установки .
  • Інсталяційний щит, який використовується для установки часу виконання його мови Installscript . Ця необхідна умова була загалом включена в setup.exe, і це було легендарним джерелом проблем . Було багато версій, декілька несумісностей і ряд помилок виконання, які виникали. Оскільки у версії 12 (або після цього) цей час виконання встановлено надійно, і він або компілюється на рідний, або працює з пісочницею (я не впевнений, який, той чи інший - ймовірно, пісочниці) надійно. Старіші установки встановлення екрана можуть відображати цю проблему розгортання. Існує застарілий сайт підтримки від Installshield для таких питань: http://consumer.installshield.com/common.asp
  • Кілька налаштувань можуть відображати нестабільну поведінку установки або переривчасті помилки під час роботи на машинах, створених для інших мов, ніж англійська, або навіть при запуску локалізованих (перекладених) версій налаштувань на англійських машинах. Це може бути суто помилка виконання або випадки, коли в локалізованих діалогових вікнах є відрізаний текст або помилкове форматування, помилковий переклад або багато інших типів помилок, пов'язаних з локалізацією мови- сама спеціальна область (перекладати текст зображеннями, перекладати саме програмне забезпечення, перекладати маркетингові матеріали, вирішувати міжнародні запити про підтримку, адаптацію до мовних налаштувань ОС тощо). Деяким мовам потрібно змінити всю програму, щоб врахувати їхні мовні особливості - типовими проблемами є макроси рядків та налаштування кодової сторінки, в останніх менше проблем із впровадженням Unicode. Дивіться зразок скріншоту з інструмента перекладу .
  • Практично у всіх налаштуваннях не вдається виконати кілька вбудованих тестів перевірки , які доступні для перевірки якості пакетів MSI. Практичний приклад перевірки див. У цій статті .
  • Іноді оновлення не вдається для MSI через те, що лише три цифри номера версії MSI фактично перевіряються під час великих сканувань оновлення.
  • Встановлення файлів INI - це вбудована функція Windows Installer. Записи можна додавати, видаляти, об'єднувати чи вирішувати будь-яким необхідним способом. Однак файли INI досить часто встановлюються як файл, а не як сегментовані значення. Це може спричинити перезапис файлу INI під час перевстановлення замість оновлення. Дуже поширена проблема MSI.
  • Вищезгадане питання також стосується програм .NET і їх файлів Config.xml. У цьому випадку MSI НЕ має вбудованого способу детального оновлення вмісту, і вам потрібно буде кодувати оновлення за допомогою спеціальної дії або замінити весь файл при встановленні. У Wix можуть бути нові функції для цього, але двигун Windows Installer не має цієї вбудованої.

Є низка більш тонких помилок та кілька великих, типових проблем, про які я забуду.

Перегляньте статтю найкращих практик Windows Installer від MSDN .


5

Використання MSI також полегшує виправлення (файли MSP) та оновлення. MSI використовує концепцію унікальних кодів продуктів та оновлень, що полегшує весь процес.

Деякі системи розгортання (CA Unicenter Software Delivery є одним із прикладів) також можуть зрозуміти особливості MSI особливим чином, що дозволяє їм набагато краще інтегруватися в систему розгортання. Наприклад, ви можете подати MSI в бібліотеку програм системи розгортання, і він автоматично виявить різні функції в продукті і автоматично дозволить набагато більш детальні спеціальні дії (локальна установка, перевірка, ремонт тощо) та ведення журналу.

Самолікування / ремонт також є головним плюсом для MSI.


2

Крім того, ознайомтеся з відкритим кодом Windows Installer XML , "набір інструментів, який будує інсталяційні пакети Windows з вихідного коду XML. Набір інструментів підтримує середовище командного рядка, яке розробники можуть інтегрувати в свої процеси збирання для створення пакетів налаштувань MSI та MSM". Це використовується в MS для підготовки декількох його основних програмних пакетів.


0

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

щоб побачити, що люди роблять з msis [або без нагляду розгортанням], відвідайте, наприклад, цей сайт та його форуми.

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