2011-01-12 5 views
1

설치하는 동안 명령 창이 표시되지 않도록하기 위해 WIX 기본 제공 사용자 지정 동작 인 CAQuietExec을 사용하고 있습니다.어떻게 WIX CAQuietExec가 명령 줄을 로깅하지 못하게합니까?

<CustomAction Id="A01" 
     Property="QtExecCmdLine" Value="&quot;MyExe.exe&quot; /password [PASSWORD]" /> 

NB : 암호 속성으로 정의 숨겨진

먼저 I 커맨드 라인을 정의한다. 이렇게하면 Windows 설치 관리자가 로그에 속성 값을 쓸 수 없습니다.

은 그 때 나는 포함 된 WIX 확장에 호출이 잘 작동

<CustomAction Id="A02" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="ignore" /> 

.

CAQuietExec : "C : \ 프로그램 파일 \ MyExe.exe"/ 암호 INCLEARTEXT

내가 임시 폴더로 이동하여 MSI를 열 때

그러나, 나는 다음과 같은 항목을 참조하십시오 로그인

e 암호는 일반 텍스트로 표시되고 숨겨지지 않습니다.

CAQuietExec에서 일반 텍스트로 암호를 기록하지 못하게하려면 어떻게합니까?

답변

2

의 src \ 기관용 될 수 있다고 생각하지 않습니다 \ wcautil \ qtexec.cpp는 QuietExec 기능이 라인 :

WcaLog(LOGMSG_VERBOSE, "%ls", wzCommand); 

하는 명령 행을 상세 모드로 기록합니다. 로깅을 중지 할 조건은 없습니다.

+0

이 정보를 제공해 주셔서 감사합니다. –

1

CustomAction 태그에는 사용자 지정 작업 데이터가 로그에 기록되지 않도록 유지해야하는 HideTarget 특성이 있습니다.

+0

감사합니다,하지만 난 이미 시도하고 작동하지 않습니다. 문제는 CAQuietExec의 코드가이 특성이나 숨겨진 특성을 따르지 않는다는 것입니다. –

1

비밀번호를 사용하는 방법에는 여러 가지가 있습니다. ORCA에서 MSI를 볼 수 있습니다. WMIC 경로 win32_process를 실행하면서 명령 줄 인수를 볼 수 있습니다. 로그에서 숨기는 것은 가치가 거의 없습니다.

MSI에 저장된 암호를 암호화하고 EXE에서 암호를 해독 할 수있는 권한을 제안합니다. 이 암호가 사용되는 것에 따라 EXE가 런타임에 임의의 암호를 생성하고 다른 일부 프로세스가 암호를 얻을 수 있어야하는 경우 암호화 된/유지하는 등의 다른 조치를 취할 수도 있습니다.

UI 시퀀스의 사용자 입력에서 암호가 오는 경우 데이터를 두 번째 속성으로 암호화하는 사용자 지정 동작을 가질 수 있습니다. 그런 다음 EXE로 전달합니다. 또는 C++ 소스 코드를 QuietExec으로 포크하여 로그 파일에 쓰지 않도록 수정할 수 있습니다.

+0

아니요, MSI에 비밀번호를 저장하지 않고 있습니다. 바보 같을 것입니다. 암호를 알지 못하는 개발자에게 MSI 로그를 발송하는 IT 전문가가 암호를 입력하기 때문에 사실이를 로그에 숨기는 것은 많은 가치가 있습니다. 나는 WIX 사용자가 중요한 항목이 기록되지 않도록 암호화와 같은 추가 길이로 가야한다는 숨겨진 특성 (HideTarget 특성은 물론)이있는 이유를 알지 못합니다. 이것은 CAQuietExec의 버그처럼 보입니다. –

+0

hide 특성은 Windows Installer의 msidbCustomActionTypeHideTarget 특성을 나타냅니다. MSIEXEC 엔진에 CustomActionData를 기록할지 여부를 알려줍니다. 실제로 지연된 사용자 지정 동작 안에 있으면 해당 플래그를 알 수있는 메커니즘을 알지 못합니다. QuietExec CA에게 로그에서 캡처하는 것과 관련하여 특별한 조치를 취해야하는지 여부를 알려주는 또 다른 플래그가 있어야합니다. 내가 말했듯이, 당신이 소스를 포크한다면 그것은 할 수 있고 WiX에서 버그를 언급 한 이후로 ... 나는 Rob이 패치 제출에 감사 할 것이라고 확신한다. –

1

Preventing Confidential Information from Being Written into the Log File 기사, 특히 3 번 지점을 살펴보십시오. 기본적으로 속성이 숨겨져 있지만 디버그 정책이 특수 값으로 설정된 경우 명령 줄은 일반 텍스트로 로그 파일에 계속 덤프됩니다. 언급 된 동작이 이러한 이유가 될 수 있는지 확인하십시오.

그리고 나는 그것이 QuietExec의 CA 버그 :

+0

팁 주셔서 감사하지만 디버그 정책 설정 (레지스트리를 통해 이루어짐)은 아무런 효과가 없습니다. 나는 따라 가서 이걸 QuietExec CA에서 버그라고 부르지 않을 것이다. - 아무도 기분을 상하게하지 않도록 :). –

+0

필자는 WiX를 쓰지 않았으므로 불쾌감을 느끼지 않았습니다. 여기에서 무슨 일이 일어나고 있는지 간단히 알기 위해 노력하고 있습니다. 그것은 분명히 QuietCA가 기록되는 것을 필터링하도록 지원하는 기능 요청입니다. 당신이 할 수있는 일은 그것을 패치하고 WcaUtil을 재건하거나 귀하의 재산을 암호 해독하고 귀하의 exe를 해독하여 전송 중에 그것을 보호하도록하십시오. 문제를 해결하는 방법에 대한 다른 아이디어가 있습니까? –

2

몇 가지 Google 검색을 수행하여 속성을 만들고 속성에 값을 할당하기 전에 속성을 만들고 숨김 = "예"로 지정하는 것이 해결책입니다.위의 코드에서 값을 할당하기 전에 새 속성 QtExecCmdLine을 만들어야합니다. 가능한 모든 사용자 지정 작업에 추가 - -

<Property Id="QtExecCmdLine" Hidden="yes"></Property> 

그런 다음

<CustomAction Id="A01" Property="QtExecCmdLine" Value="&quot;MyExe.exe&quot; /password [PASSWORD]" /> 

그런

<CustomAction Id="A02" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return .... 
관련 문제