2014-11-28 2 views

답변

1

Windows Installer는 어떤 이유로 인해 속성 열거 기능을 구현하지 않았습니다. 속성 테이블을 쿼리 할 수는 있지만 빌드시 테이블에 정의 된 속성 만 가져옵니다. 네가하려는 일을 할 방법이 없다는 것을 안다. 내 최선의 해결 방법은 EXE 부트 스트 래퍼를 사용하여 MSI를 프론트 엔드하고 거기에서 수표를 작성하는 것입니다. 그런 다음 MSI에 EXEDRIVEN = 1과 같은 것을 전달한 다음 MSI 게이트에서 해당 속성을 확인하십시오.

또 다른 생각은 CLIENTPROCESSID를 사용하여 사용자 지정 작업에서 Win32_Process를 쿼리하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. msiexec 명령 줄 문자열이 msi 로그 파일에 표시됩니다. 아마도 msiexec에 전달 된 명령 줄을 얻을 수있는 방법이 있습니까? –

+0

CLIENTPROCESSID를 사용하여 Win32_Process를 쿼리하고 인수를 가져올 수 있습니다. –

+0

Windows는 설치 프로그램 프로세스에 대한 액세스를 허용하지 않습니다. 관리자 권한으로 사용자 지정 동작이 있습니다. Execute = "deferred"Impersonate = "no" –

1

모든 속성은 PUBLIC (대문자) 속성이어야합니다 명령 줄로 설정하고, 명령 줄에 설정되어있는 경우 그들은 통해 서버 설치 프로세스에 통과 특성 목록에 추가되어야한다 SecureCustomProperties property 구분 된 속성 목록입니다. 여기에 나열되지 않은 속성은 LocalSystem 계정 (기본 제공 운영 체제 서비스 계정)으로 실행되므로 모든 유형의 변경이 가능한 지연 설치 모드에서는 사용할 수 없습니다. 사용자 인터페이스 시퀀스는 사용자 권한으로 실행되며 설치가 자동으로 실행되면 완전히 건너 뛸 수 있습니다.

SecureCustomProperties properties에있는이 속성 목록을 업데이트하고 명령 줄을 통해 허용되는 모든 속성을 설정하면 간단한 문자열 작업으로 열거 할 수 있습니다. 문자열을 세미콜론으로 분리 한 다음 모든 값을 열거합니다. 등록 정보 표에 기본값 인을 설정하고 명령 행에서이를 대체 할 수 있습니다. 코드는 서버 프로세스에 전송 된 값이 기본 값인지 또는 변경되었는지 여부를 확인할 수 있습니다. 허용되지 않는 값을 기본값으로 설정할 수도 있으므로 명령 줄을 통해 속성을 재정의해야합니다.

EnableUserControl property에 유의하십시오.

+0

보이지 않는 것 같습니다. SecureCustomProperties는 NEWERFOUND, OLDVERSIONBEINGUPGRADED, SELFFOUND를 표시하지만 msiexec 수준의 속성은 표시하지 않습니다. –