UAC, тудыть его в качель.

Товарищи, никто не подскажет, где находится очередь желающих оторвать достоинства тому, кто придумал UAC для Vista? Что? Достоинств на всех не хватит? Я предлагаю тогда их пришывать назад и отрывать по второму кругу.

А если серьезно. Никто  случайно не сталкивался с следующей проблемой

- Есть MSI

- Устанавливаем его на машину, выбирая галочку “для всех пользователей”

- Он благополучно устанавливается, по ходу поднимая UAC и прося подтвердить что я таки хочу его поставить (я Admin, поэтому он хоть credentials не просит)

- После того как установилось, щелкаем снова по MSI – он запускается в Maintanance mode (опции modify/repair/remove). Чтобы я не выбирал (modify, repair или remove) он в результате посылает нафиг по тому поводу что у меня нету IE 5.5 или выше (на самом деле есть).

Собственно грабли заключаются в том, что почему-то в этом maintanance mode Vista не выплевывает UAC окошко и не elevate процесс. В результате MSI пытается что-то там делать но Windows бьет его рукам и говорит “не скажу тебе противный, какой у меня IE”, ну и MSI естественно передает мне теже слова.

Подтверждением того, что это таки проблемы с elevation, является то, что я насильно (Run as adimistrator) запустил MSI сразу elevated и все зашуршало.

А еще забавность в том, что если я делаю теже самые действия только устанавливаю не для “all user on this computer”, а только для себя любимого, то проблемы тоже исчезают и оно таки показывает UAC для maintanance.

Да, кстати, для полноты картины. Мне нужно починить это не с точки зрения пользователя, а именно с точки зрения программиста. То есть, что-то сделать с исходниками (они у меня есть) MSI (здравствуй Wise Installer Studio), чтобы эта фигня зафурычила.

О… и если можно запишите меня в очередь на отрывание достоинств и к MSI’шикам. Хотя нет, пожалуй это перебор… Для них вполне будет достаточно просто мощной затрещины, чтобы в следующий раз делали продукт по проще для понимания.


RSS feed | Trackback URI

18 Comments »

Comment by ctype Subscribed to comments via email
Reply to the post
2009-07-16 17:33:51

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

вот уже много лет пользуюсь InnoSetup – очень удачная штука, простая и в то же время с возможностью наворотов

Comment by Victor Ronin
Reply to ctype
2009-07-16 18:16:32

Мне тоже по душе больше InnoSetup, но крупные корпорации предпочитают иметь дело с MSI, так как есть какие-то тонкости, когда его проще устанавливать по всей компании.

 
 
Comment by ctype Subscribed to comments via email
Reply to the post
2009-07-16 17:44:32

а, ну да. с msi – была какая-то мутная тулза консольная, которая распаковывала msi, потом можно было поправить и снова собрать … с ходу не нашел, но когда-то она мне очень помогла чет глючное но нужное поставить … может эта ? http://wix.sourceforge.net/manual-wix2/dark.htm но не уверен

Comment by Victor Ronin
Reply to ctype
2009-07-16 18:15:49

Не, все ok. У меня исходники есть. Я могу поправить. Вопрос только состоит в том, что нужно править, чтобы оно elevation запросила.

Comment by ctype Subscribed to comments via email
Reply to Victor Ronin
2009-07-16 19:09:10

мда. после беглого просмотра http://www.google.com.ua/search?q=how+to+force+uac+elevation+in+msi
я подумал “хорошо что у меня такого нет” … хотя вроде как третий результат содержит какие-то мысли

 
 
 
Comment by ONE
Reply to the post
2009-07-16 22:27:04

Может попробовать вызвать какую-то custom action, которая потребует уровень admin’а и заставит installer потребовать elevation? Например просто создание пустого sample.txt на C: диске?
Никогда не пробовал бороться с чистым MSI, но из InstallShield 12 в mixed MSI/InstallScript вроде проблем с этим не было.

Comment by Victor Ronin
Reply to ONE
2009-07-17 09:12:11

Надо попробывать, хотя думаю оно не поможет.
Насколько я понимаю, UAC требует elevation для процесса, а не для действия.

То есть, если процесс не elevated и он вызывает какое-то хитрое действие, то это действие просто блокируется.

 
 
Comment by Anonymous
Reply to the post
2009-07-16 22:38:39

Прежде чем ругать Microsoft в целом, и Висту и MSI в частности, почитайте заметку http://www.acresso.com/webdocuments/PDF/is_vista.pdf?link_id=productsTipsTricks

Следующий шаг – запустить установку с журналированием и посмотреть, что конкретно там валится. Вполне возможно, что это криво написанный custom action, корень большинства проблем с MSI :)

Comment by Victor Ronin
Reply to Anonymous
2009-07-17 09:14:36

Спасибо за ссылку. Почитаю и вполне возможно таки что-то кривое и есть, но ругать таки вполне можно.

Спасибо им за то, что документация есть. Но, честно говоря документация по UAС и MSI откровенна сложная. И сложная не в том смысле, что много информации, а в том смысле, что приходится читать 2-3 страницы одновременно сверяя терминологию и эффекты при разных конфигурациях.

 
 
Comment by Nisus
Reply to the post
2009-07-17 01:16:40

Насколько я помню, там есть флажок MSIUSEREALADMINDETECTION у msi-ника, который будет заставлять его отрабатывать поднятие прав. Вообще для инсталляции это не всегда нужно, частенько никаких привилегий и не требуется, если не устанавливаться в Program Files, поэтому по умолчанию инсталляторы и не поднимают привилегии. В общем можно завести setup.exe, который будет дергать msi-ник (для setup.exe привилегии поднимаются всегда) или просто установить флажок, подробнее тут:
http://stackoverflow.com/questions/304353/mark-msi-so-it-has-to-be-run-as-elevated-administrator-account
там же есть и скрипт для установки флажка
http://stackoverflow.com/questions/312490/script-to-add-msiuserealadmindetection-to-msi

Comment by Victor Ronin
Reply to Nisus
2009-07-17 09:15:56

на флаг – погляжу.

Насчет setup.exe, который будет дергать MSI – не подойдет. Корпорации рассылают в виде установок на машины пользователей именно MSI. Так, что .exe туда просто не добереться.

 
 
Comment by Конь Subscribed to comments via email
Reply to the post
2009-07-17 02:52:42

Нда уж, в msi нереальное количество тонкостей, ну его в качель. Правильные менеджеры пакетов только в Linux, в винде пользуюсь InnoSetup.

 
Comment by Anonymous
Reply to the post
2009-07-17 05:41:39

2 Конь: если писать маленькие приложения для домашнего использования, то возможно и так. Если же стоит задача приложение правильным образом задеплоить в организации, то без MSI не обойтись. Хотя, конечно, MSI, как и любой сложный инструмент, нужно изучать.

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

Каждому свое :)

Comment by Конь Subscribed to comments via email
Reply to Anonymous
2009-07-17 07:21:34

Да я и не спорю, что MSI это круто, только реализация этого всего – нереально плохая (по моему мнению), можно было бы сделать намного проще и без “подводных камней”. Поэтому мне просто проще пользоваться InnoSetup, не охота тратить кучу времени только для того, чтобы сделать установщик для программы.

Comment by Victor Ronin
Reply to Конь
2009-07-17 09:19:16

Я согласен. Собственно против сокращения MSI я ничего не имею.

Мне не нравятся
а) Организация script actions в MSI. ПО большему счету потратил день для того, чтобы четко понять, что после чего выполняется. После того как понял, я таки смог расшифровать фразы из документации, которые объясняли
б) Не нравится, то что не сведено воедино как он должен себя вести во всех режимах

 
 
 
Comment by Aleksey
Reply to the post
2009-07-17 14:07:15

А Вы уверены, что на хосте свежая версия WI, со всеми апдейтами и т.д.?

Совсем недавно паковал и ставил свою апликацию на висту “for all users”. Починка и ремув работали на ура. Если это повторяется на многих хостах, может что-то с доменными политиками…

 
Comment by arkanoid Subscribed to comments via email
Reply to the post
2009-07-17 16:19:49

Я хочу заметить, что UAC это ЕДИНСТВЕННОЕ, для чего вообще нужна Виста.

Comment by Andrey1990 Subscribed to comments via email
Reply to arkanoid
2009-07-18 03:19:13

Из этого следует вывод, что виста кал. И в ближайшие 5 лет как минимум еще XP будет жить, хоть и из продажи вылетает, зато в инете хватает. Во как даже рифмой сказал, хы. :)

 
 
Name
E-mail
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.
Please enter word "captcha":

Trackback responses to this post