2009-12-28 4 views
5

C#으로 스냅인을 작성했습니다.MMC 사용자 지정 스냅인 설치

installutil을 사용하여 설치하려고했지만 처음에는 작동하지 않았습니다. 나는 msdn 페이지에서 그들이 management.dll을 GAC에 설치하기 위해 mmcperf를 실행한다고 말했습니다.

이렇게하면 스냅을 설치하고 실행할 수있었습니다. 나는 XP 기계를 가지고있다.

제 질문은 고객의 컴퓨터에 내 맞춤 스냅을 어떻게 배치할까요 ... 고려해야 할 사항은 무엇입니까? (OS ?, .net 프레임 워크는 mmc 3.0이 설치되어 있습니까?)

스냅인 설치 중에 mmcperf를 실행할 수 있습니까? 이것은 좋은 접근 방법입니까?

답변

8

문제는 다를 수 있지만 64 비트 컴퓨터에서 비슷한 문제가 발생하여 다음을 발견했습니다. 문제가 32/64 비트와 관련이 없다면 문제가 무엇인지 말할 수 없으며 시간을내어 사과드립니다.

InstallUtil을 사용하여 스냅인을 설치할 수 있어야합니다. 그러나 InstallUtil에는 x86 바이너리의 경우 하나 (기본값)와 x64 바이너리의 경우 두 가지 버전이 있습니다.

모든 CPU에 대해 C# 코드를 컴파일하더라도 표준 InstallUtil을 사용하면 MMC 스냅인이 32 비트 스냅인으로 만 등록됩니다. 64 비트 OS에서 실행중인 경우 MMC를 32 비트 프로세스 (MMC /32 IIRC)로 시작하고 해당 스냅인을 사용할 수 없는지 확인하십시오.

스냅인을 64 비트 스냅인으로 등록하려면 64 비트 버전의 InstallUtil (일반적으로 C : \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727에 있음)을 사용해야합니다.

두 버전의 스냅인을 모두 등록하려면 두 번 등록해야합니다. 마크 시만의 반응에 추가

+0

감사합니다. 직접적으로 내 문제를 해결하지는 않지만 고맙습니다. 프로젝트 출력을 설치하는 사용자 지정 작업으로 MSI를 만듭니다. 64 비트 컴퓨터 인 경우 설치 프로세스 중에 64 비트 버전을 installutil로 실행한다고 가정합니다. – pdiddy

+0

정말 확실하지 않지만 AFAIR msi 파일은 32 비트 또는 64 비트이므로 명시 적으로 64 비트 MSI가 아니라면 32 비트 버전을 사용하게 될 것입니다. 그러나 MMC를 32 비트 모드로 열어 스냅인을 사용할 수 있는지 쉽게 테스트 할 수 있습니다. 레지스트리의 어느 노드 아래에 스냅인이 등록되어 있느냐에 따라 달라집니다. –

3

:

당신은 또한 당신의 스냅인은 64 비트 레지스트리 항목에 등록, 또는되었는지 여부를 확인하기 위해 직접 MMC 레지스트리 항목을 확인할 수 있습니다 32 비트 재 레지스트리 (쇼 하나

  • 64 비트 스냅인 : HKLM \ 소프트웨어 \ 마이크로 소프트 \ MMC의 \ 스냅인 (snapin) \ FX : {SNAP-IN-GUID} ...
  • 32 비트 스냅인 : HKLM \ 소프트웨어 에서 Wow6432Node)까지 \ Wow6432Node \ Microsoft \ MMC \ SnapIns \ FX : {SNAP-IN-GUID} ...

항목이 HKLM \ Software \ Wow6432Node에만있는 경우 32 비트 스냅인을 등록한 경우 "MMC/32"실행에 대한 Mark의 조언을 통해 해당 항목을 볼 수 있도록해야합니다. 그건 세상 끝은 아니야. MMC 세션을 스냅인 바로 가기로 저장하면 실행하면 32 비트 버전의 MMC가 열리는 것 같습니다.

정말로 64 비트 스냅인 등록을 원한다면 MSDN에는 MMC 64-Bit Versus 32-Bit Considerations 페이지가 있으며 64 비트 대 32 비트 레지스트리 항목을 가져 오기 위해 InstallUtil 경로를 비롯한 몇 가지 세부 정보가 포함되어 있습니다.

그러나 일부 MSI 패키징 응용 프로그램에는 실제로 대상 컴퓨터에서 InstallUtil.exe를 호출하는 대신 MSI 자체에 바이너리로 InstallUtil.exe 복사본이 포함되어 있습니다.(Orca을 사용하여 MSI 바이너리 테이블과 사용자 지정 작업을 살펴보면이 문제가 발생하는지 확인할 수 있습니다. 32 비트 InstallUtil 만 포함되어 있으면 잘못된 위치 (Wow6432Node)에 등록 될 수 있습니다.

Windows Installer "올바른 방법"(TM)은 InstallUtil을 전혀 사용하지 않는 것입니다. (주로 관리되는 MSI 사용자 지정 동작을 실행하는 것과 관련된 문제로 생각됩니다.) 어쨌든 InstallUtil을 사용하지 않았다면 MSI에서 명시 적으로 레지스트리 항목을 만들어 스냅인을 등록하고 Windows Installer를 만들고 제거하는 것을 제어하십시오.

다른 방법에 설명되어 있습니다, 당신은 대상 시스템의 Framework64 폴더 아래에있는 InstallUtil.exe는 호출하는 사용자 지정 작업을 만들 수 있습니다. 이렇게하면 올바른 스냅인 등록 위치를 얻을 수 있지만 실행하는 동안 사용자 지정 동작이 CMD 셸 창을 팝업하여 사용자를 괴롭히는 경우이를 처리해야합니다. MSI 저작 도구에 해당하는 기능이 있는지는 잘 모르지만 WiX에는 Quiet Execution Custom Action이 있습니다. (WiX를 사용하지 않고 WixUtilExtension.dll을 포함하고 QtExec64CmdLine 속성을 적절하게 설정 한 후에 "CAQuietExec64"를 호출 할 수 있다고 가정합니다. 그러나 MSI 작성 수준에서 작업하는 경우 더 좋을 것입니다. WiX를 전환하고 사용하기 만하면됩니다.

관련 문제