MMC пользовательская поспешная-ins установка

Я записал снимок - в в c#.

Я пытался установить его с помощью installutil, и это не работало сначала. Я замечаю, что на странице MSDN они сказали для выполнения mmcperf для установки management.dll в GAC.

Делая это, я смог установить свой снимок в и выполнить его. У меня есть xp машина.

Мой вопрос состоит в том, как я должен развернуть свой пользовательский снимок в на клиентской машине... Каковы вещи, которые я должен рассмотреть? (ОС?, платформа .NET, mmc 3.0 установлен и т.д.?)

Я могу выполнить mmcperf во время установки моего снимка в? Действительно ли это - хороший подход?

5
задан pdiddy 28 December 2009 в 19:27
поделиться

2 ответа

Проблема может быть другой, но однажды я столкнулся с подобной проблемой на 64-битной машине и обнаружил следующее. Если ваша проблема не связана с 32/64-битом, я не могу сказать, в чем проблема, и приношу свои извинения за то, что уделил вам время.

Вы должны быть в состоянии установить оснастку, используя InstallUtil. Однако, обратите внимание, что на InstallUtil есть две отдельные версии: Одна (по умолчанию) для двоичных файлов x86, а другая для двоичных файлов x64.

Даже если вы скомпилируете код на C# для Любого процессора , используя стандартную установку InstallUtil, вы сможете зарегистрировать оснастку MMC только как 32-битную. Если вы работаете на 64-битной операционной системе, попробуйте запустить MMC как 32-битный процесс (MMC /32 IIRC) и посмотрите, нет ли там вашей привязки.

Для регистрации оснастки как 64-битной, вы должны использовать 64-битную версию InstallUtil (обычно это можно найти в C:\Windows\Microsoft.NET\Framework64\v2.0.50727).

Для регистрации обеих версий оснастки, вы должны зарегистрировать ее дважды.

.
8
ответ дан 13 December 2019 в 19:28
поделиться

Adding to Mark Seemann's response:

Вы также можете напрямую проверить записи реестра MMC, чтобы проверить, был ли ваш снимок зарегистрирован в 64-битных записях реестра, или в 32-битном перенаправленном реестре (который отображается в разделе Wow6432Node):

  • 64-битный снапен: HKLM\Software\Microsoft\MMC\SnapIns\FX:{SNAP-IN-GUID}. ...
  • 32-битный снимок: HKLM\Software\Wow6432Node\Microsoft\MMC\SnapIns\FX:{SNAP-IN-GUID}...

Если Ваши записи находятся только под HKLM\Software\Wow6432Node, то Вы зарегистрировали 32-битные снимок, и совет Марка по запуску "MMC /32" должен сделать их видимыми. Это еще не конец света: если Вы сохраните Ваш сеанс MMC как ярлык снаппина, я думаю, что при запуске откроется 32-битная версия MMC.

Если Вы действительно хотите зарегистрировать 64-битные снаппины (а почему бы и нет? ), MSDN имеет страницу на MMC 64-Bit Versus 32-Bit Considerations с некоторыми подробностями, включая то, какие InstallUtil пути вызывать для получения 64- и 32-битных записей реестра.

Обратите внимание, что некоторые MSI упаковки приложений на самом деле включают копию InstallUtil.exe в MSI себя в качестве двоичного файла, вместо того, чтобы вызывать тот, который на целевой машине. (Вы можете проверить, происходит ли это, посмотрев на двоичную таблицу MSI и пользовательские действия, используя Orca.). Если только 32-битный InstallUtil включен, это поставит вашу регистрацию в неправильном месте (Wow6432Node), невезение для вас.

Как я понимаю, инсталлятор Windows "правильный путь" (TM) является не использовать InstallUtil вообще (я думаю, в основном из-за проблем, связанных с запуском управляемых MSI пользовательских действий?). В любом случае, если бы вы избегали использования InstallUtil, вы бы полностью зарегистрировали свою привязку, создав записи реестра явно в MSI, поставив Windows Installer под контроль их создания и удаления.

Или же вы можете выполнить пользовательское действие для вызова InstallUtil.exe в папке Framework64 на целевой машине. Это позволило бы получить правильное место регистрации, но тогда вам пришлось бы иметь дело с тем фактом, что пользовательское действие будет всплывать окно CMD оболочки во время выполнения, если вас это беспокоит. Не уверен, что ваш инструмент MSI authoring имеет эквивалент, но в WiX есть Quiet Execution Custom Action . (Я полагаю, если вы не используете WiX, вы все еще можете включить WixUtilExtension.dll и вызвать "CAQuietExec64" после соответствующей настройки свойства QtExec64CmdLine... но если вы работаете на этом уровне MSI-авторинга, то, вероятно, вам лучше просто переключиться и использовать WiX :)

.
3
ответ дан 13 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: