Товарищи, никто не подскажет, где находится очередь желающих оторвать достоинства тому, кто придумал 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’шикам. Хотя нет, пожалуй это перебор… Для них вполне будет достаточно просто мощной затрещины, чтобы в следующий раз делали продукт по проще для понимания.
реализовать простую, в принципе, вещь очень сложно могла только большая команда «непрограммистов»
лично я для себя еще много лет назад решил не пересекаться с msi. пусть уж майкрософтовские с ним бодаются, у них времени и денег много.
вот уже много лет пользуюсь InnoSetup — очень удачная штука, простая и в то же время с возможностью наворотов
Мне тоже по душе больше InnoSetup, но крупные корпорации предпочитают иметь дело с MSI, так как есть какие-то тонкости, когда его проще устанавливать по всей компании.
а, ну да. с msi — была какая-то мутная тулза консольная, которая распаковывала msi, потом можно было поправить и снова собрать … с ходу не нашел, но когда-то она мне очень помогла чет глючное но нужное поставить … может эта ? http://wix.sourceforge.net/manual-wix2/dark.htm но не уверен
Не, все ok. У меня исходники есть. Я могу поправить. Вопрос только состоит в том, что нужно править, чтобы оно elevation запросила.
мда. после беглого просмотра http://www.google.com.ua/search?q=how+to+force+uac+elevation+in+msi
я подумал «хорошо что у меня такого нет» … хотя вроде как третий результат содержит какие-то мысли
Может попробовать вызвать какую-то custom action, которая потребует уровень admin’а и заставит installer потребовать elevation? Например просто создание пустого sample.txt на C: диске?
Никогда не пробовал бороться с чистым MSI, но из InstallShield 12 в mixed MSI/InstallScript вроде проблем с этим не было.
Надо попробывать, хотя думаю оно не поможет.
Насколько я понимаю, UAC требует elevation для процесса, а не для действия.
То есть, если процесс не elevated и он вызывает какое-то хитрое действие, то это действие просто блокируется.
Прежде чем ругать Microsoft в целом, и Висту и MSI в частности, почитайте заметку http://www.acresso.com/webdocuments/PDF/is_vista.pdf?link_id=productsTipsTricks
Следующий шаг — запустить установку с журналированием и посмотреть, что конкретно там валится. Вполне возможно, что это криво написанный custom action, корень большинства проблем с MSI 🙂
Спасибо за ссылку. Почитаю и вполне возможно таки что-то кривое и есть, но ругать таки вполне можно.
Спасибо им за то, что документация есть. Но, честно говоря документация по UAС и MSI откровенна сложная. И сложная не в том смысле, что много информации, а в том смысле, что приходится читать 2-3 страницы одновременно сверяя терминологию и эффекты при разных конфигурациях.
Насколько я помню, там есть флажок 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
на флаг — погляжу.
Насчет setup.exe, который будет дергать MSI — не подойдет. Корпорации рассылают в виде установок на машины пользователей именно MSI. Так, что .exe туда просто не добереться.
Нда уж, в msi нереальное количество тонкостей, ну его в качель. Правильные менеджеры пакетов только в Linux, в винде пользуюсь InnoSetup.
2 Конь: если писать маленькие приложения для домашнего использования, то возможно и так. Если же стоит задача приложение правильным образом задеплоить в организации, то без MSI не обойтись. Хотя, конечно, MSI, как и любой сложный инструмент, нужно изучать.
Впрочем, если программа установки простая, то и MSI несложно пользоваться. И быть уверенным, что программа нормально поставится, нормально откатится в случае проблем и нормально будет удалена, без всяких ошметков, остающихся в системе.
Каждому свое 🙂
Да я и не спорю, что MSI это круто, только реализация этого всего — нереально плохая (по моему мнению), можно было бы сделать намного проще и без «подводных камней». Поэтому мне просто проще пользоваться InnoSetup, не охота тратить кучу времени только для того, чтобы сделать установщик для программы.
Я согласен. Собственно против сокращения MSI я ничего не имею.
Мне не нравятся
а) Организация script actions в MSI. ПО большему счету потратил день для того, чтобы четко понять, что после чего выполняется. После того как понял, я таки смог расшифровать фразы из документации, которые объясняли
б) Не нравится, то что не сведено воедино как он должен себя вести во всех режимах
А Вы уверены, что на хосте свежая версия WI, со всеми апдейтами и т.д.?
Совсем недавно паковал и ставил свою апликацию на висту «for all users». Починка и ремув работали на ура. Если это повторяется на многих хостах, может что-то с доменными политиками…
Я хочу заметить, что UAC это ЕДИНСТВЕННОЕ, для чего вообще нужна Виста.
Из этого следует вывод, что виста кал. И в ближайшие 5 лет как минимум еще XP будет жить, хоть и из продажи вылетает, зато в инете хватает. Во как даже рифмой сказал, хы. 🙂