henry_flower: A melancholy wolf (Default)
henry_flower ([personal profile] henry_flower) wrote2024-04-06 09:42 pm

Інсталятори ув віндюку

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

Наприклад, є ноудний майкро-сервіс foo, який від ОС вимагає лише підтримку TCP/IP, робить жодних змін ув файловій системі, вимагає 0 суто лайнаксних API, пише logs до stdout, вважає що його будуть байнднути до умовного 12345 порту, що привілей спеціяльних не вимагає.

На лайнаксі для такого майкро-сервісу пишуть елементарного юніт-хфайлу ув ~/.config/systemd/user/foo.ini і Боб є ваш дядько--користувач лайнаксу (регулярний) контролює foo за допомогою звичних команд systemctl.

Ув віндюку, починаючи з 10 (чи 8?), з'явилися "per-user" сервіси, наприклад cbdhsvc (це так, у якості конспірації, зашифровується словосполучення сервіс кліпбоарду), які, незважаючи на назву, вимагають привілеї адміністраторські для свого створення і затишні поради "інсталюйте нові ваші аплікації до $env:APPDATA" зіштовхуються зі суворою реальністю майкрософтського ідіотизму.

Чи складно тоді сгенерувати інсталятора, що

  1. перепише директорію з хфайлами майкро-сервісу до $env:PROGRAMFILES/foo;
  2. створить ув реґістрі key з описом сервісу;
  3. створить на десктопі ув паблік фолдері (тобто для всіх користувачів) шортката на http://127.0.0.1:12345?

Нескладно, але я би поставив оцінку 3/10: не рекомендую.

До появи UWP аплікації, які у нас час роблять для майкрософтського магазину істоти що народилися лузерами, генерувався .msi хфайл. Більше 10 років тому для цього був wix toolset--декілька феноменально огидних CLI-утіліт, написаних людьми, для яких поняття смак є так само близьке, як відстань сузір'я Андромеди до планети Земля.

З того часу змінилося нічого. Є інші способи створювати інсталятори, наприклад Inno Setup (якщо вас не дратує даялекта паскалю (так), на якому доводиться писати шматки скриптів для будь-якої нетривіяльної дії), або InstallShield, якщо ви міцно поїхали головою та бажаєте сабскріпшона $2474/рік годувати якихось індусів.

Питати про wix будь-яку LLM--гаяти час. Гоогл забитий порадами для версії 3.x, яка малює даялоги для моніторів 2006 року з 96 dpi. Нова версія 5 має неймовірне поліпшення: вміє створювати список файлів сама, без допомоги ікстернального препроцесора або (я вибачаюсь) xslt! Для цього грандіозного leap forward їм знадобилося 20 років. А також:

  • "інторнет" шортката, який генерує wix, потім неможливо відредагувати (до permissions це стосунку не має), url є вшитий намертво;

  • якщо воно не може стартувати сервіса ув процесі інсталяції--настає павза та rollback, жодні твікі з vital=no, wait=no і т.і. не допомагають, хоча згідно пародії на документацію повинні;

  • інтерхфейсьні лейбли можуть стискатися ув залежності від різолюшену монітору та dpi--дуже зручно якщо ти повідомляєш користувачу "дивись logs ув $env:SystemRoot/Temp/foo*, а згенерований даялог малює .../foo*.

Куди правильно писати logs для користувача NT Authority\Local Service я так і не зрозумів. Від блискучих за точністю порад що він має limited write access to the file system у мене бажання перекваліфікуватися на ілектришона та до кінця своїх днів лагодити розетки ув субурбії Калґарі.


Post a comment in response:

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting