Regasm.exe не удается в установке при запуске из MSI на системах x64 - PullRequest
0 голосов
/ 04 марта 2011

У меня проблема с установкой. При установке запускается параметр командной строки для regasm.exe .net comll с параметром / codebase.

Когда я запускаю установку (созданную с помощью installshield) из Setup.exe, все работает нормально.

Когда я запускаю установку из MSI, вызов regasm не выполняется, ничего не регистрируется и программа не запускается.

Эта проблема, похоже, касается только систем на базе x64, и в системах x86 работает любой из этих методов.

Есть идеи, в чем может быть проблема?

EDIT

Проблема, похоже, заключается в том, что даже при входе в систему в качестве администратора msi не выполняется в качестве администратора. Я все еще получаю диалог UAC, но только в середине пути мастера. При запуске из setup.exe я получаю панель UAC до появления мастера. Если я запускаю MSI из и административную командную строку, я не получаю панель UAC, и все работает как положено.

Итак, я представляю, что все работает, как ожидалось, не так ли? И что для правильной работы пользовательских установок нужно запустить msi с правами администратора?

1 Ответ

1 голос
/ 17 марта 2011

В этом блоге обсуждается необходимость запуска исполняемого файла с привилегиями администратора из контекста установщика.Рассматриваемый исполняемый файл отличается (appcmd.exe, в отличие от regasm.exe в вашем случае), но проблема звучит аналогично.

Фрагмент этого поста, который, я думаю, имеет отношение к вам, таков:

Оказывается, что по умолчанию пользовательские действия олицетворяют пользователя, начавшего установку, без повышения прав администратора, под которым запускается сам установщик.Это можно изменить, установив для атрибута Impersonate в CustomAction значение «Нет».Для этого также потребовалось добавить Execute = «deferred», и в результате пользовательское действие запустилось до InstallFinalize, а не после.

Я не знаком с InstallShield, но посмотрим, есть ли способотметить пользовательское действие, которое запускается regasm.exe.Вы хотите найти опции, которые вы можете установить, которые сформулированы аналогично одному из следующих (это разные способы сказать одно и то же):

  • Установить бит msidbCustomActionTypeNoImpersonate
  • Установка настраиваемого действия для «отложенного выполнения в системном контексте»
  • Установка настраиваемого действия для «отложенного выполнения без олицетворения»
...