문제

클래스 라이브러리에서 디퍼 커플 링 WMI 제공 업체를 만들고 있습니다. 내가 읽은 모든 것은이 라인을 따라 무언가를 포함시키는 지점을 지적합니다.

[System.ComponentModel.RunInstaller(true)]
public class MyApplicationManagementInstaller : DefaultManagementInstaller { }

이 설치의 목적은 Windows WMI 인프라가 사용하기 전에 WMI 제공 업체의 구조를 알고 있어야하기 때문입니다.

내 질문은 -이 "설치 프로그램"이 언제 실행 되었습니까? MSDN은 설치 프로그램이 "어셈블리 설치 중에"호출 될 것이라고 말하지만 WMI 제공 업체가 포함 된 클래스 라이브러리의 맥락에서 그것이 무엇을 의미하는지 또는 언제 일어날 지 확실하지 않습니다.

나는 이것이 수동으로 실행하기위한 자동화 된 교체품이라는 인상을 받았다. installutil.exe WMI 제공 업체가 포함 된 어셈블리에 대해, 공급자에 대한 변경 사항은 명령 프롬프트에서 installUtil을 수동으로 실행하지 않는 한 Windows WMI 인프라에 의해 인식되지 않습니다. 개발 중에 내 컴퓨터 에서이 작업을 수행 할 수 있지만 공급자를 사용하는 응용 프로그램이 다른 컴퓨터에 배포 된 경우 무엇입니까?

이 runinstaller / defaultmanagementInstaller 조합이 제대로 작동하지 않는 것 같습니다.

도움이 되었습니까?

해결책

내가 이해했듯이 DefaultManagementInstaller는 InstallUtil.exe에 의해 실행됩니다. 포함하지 않으면 클래스는 WMI에 설치되지 않습니다. 어쩌면이를 실행하는 '설정 프로젝트'또는 '설치 프로그램 프로젝트'를 만들 수는 있지만 Visual Studio를 사용하지 않기 때문에 확실하지 않습니다.

편집하다

원격 설치의 경우 옵션은 /mof 옵션을 사용하여 installUtil을 사용하여 어셈블리에 대한 MOF를 생성하고 MOFComp를 사용하여 WMI로 이동하는 것일 수 있습니다.

다른 팁

나는 이와 같은 것을 사용하여 프로그래밍 방식으로 installutil을 호출합니다.

    public static void Run( Type type )
    {
        // Register WMI stuff
        var installArgs = new[]
                                   {
                                       string.Format( "//logfile={0}", @"c:\Temp\sample.InstallLog" ), "//LogToConsole=false", "//ShowCallStack",
                                       type.Assembly.Location,
                                   };

        ManagedInstallerClass.InstallHelper( installArgs );
    }

이것을 Main () 메소드에서 호출하십시오.

-Dave

감사합니다. RuninStaller와 DefaultManagementInstaller가 모든 것을 조립품에 대해 SenstalUtil을 성공적으로 실행할 수있는 것처럼 보입니다. 내가 첫 번째 WMI 제공 업체와 컴파일하고 연주 한 시점에서 InstallUtil에 대해 알지 못했기 때문에 이것은 이상합니다.

나는 MOF 파일을 사용하는 것을 살펴보고 내 자신의 용도로 installUtil 명령 줄을 Vs의 게시물 빌드 이벤트로 실행할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top