Windows MSI 파일에서 사용 가능한 공용 속성을 검색하기위한 도구 또는 메커니즘이 있습니까?
MSI 파일을 제공하는 일부 공급 업체는 이러한 파일을 자체적으로 문서화하지 않으므로 소스 코드없이 이러한 파일을 노출 할 수있는 방법이 있는지 궁금합니다.
Windows MSI 파일에서 사용 가능한 공용 속성을 검색하기위한 도구 또는 메커니즘이 있습니까?
MSI 파일을 제공하는 일부 공급 업체는 이러한 파일을 자체적으로 문서화하지 않으므로 소스 코드없이 이러한 파일을 노출 할 수있는 방법이 있는지 궁금합니다.
답변:
Lessmsi 는 .msi에서 모든 특성을 검색하기위한 대화식 응용 프로그램뿐만 아니라 명령 줄을 제공합니다.
대화식으로 .msi를 연 다음 테이블보기 로 이동하여 "속성"을 선택하거나 입력하십시오. 그러나 이것은 속성 이름을 제공하지만 해당 속성에 유효한 값을 제공하지 않습니다. (또는 적절한 곳을 찾지 못했습니다.)
콘솔에 속성 테이블을 나열하는 명령 줄 (절약 적으로 간단한 > output.csv
리디렉션 으로 캡처 할 수 없음 )
lessmsi l -t Property ...\path\to\setup.msi
lessmsi 는 GUI를 열고 수동으로 조사하려는 경우 확실히 작동하는 훌륭한 도구입니다. 그러나 다음 명령으로 모든 속성을 안정적으로 표시 할 수는 없습니다.
lessmsi l -t Property <msi_name>
가능한 모든 속성을 얻을 수있는 한 가지 방법은 실제로 MSI 파일을 사용하여 설치, 복구 또는 제거를 수행하고 프로세스를 기록하는 것입니다. 다음 명령은 속성 만 기록하고 다른 것은 기록하지 않습니다.
<msi_name> /lp! <msi_property_logfile>
위의 명령은 다음과 같습니다.
msiexec /lp! <msi_property_logfile> /i <msi_name>
나의 선호하는 방법은, 그러나,하는 것입니다 하지 실제로 (그리고 단순히 대신 추출) / 삭제 / 복구를 설치합니다. 이 방법이 lessmsi에 비해 장점 은 타사 유틸리티 (예 : lessmsi )가 필요하지 않으며 설치를 망칠 필요가 없다는 것입니다. 실제로 프로그램을 설치하기에 디스크 공간이 충분하면 다음을 수행 할 수 있습니다.
msiexec /a <msi_name> /lp! <msi_property_logfile> TARGETDIR=<absolute_path_to_extract_to>
것을 참고 <absolute_path_to_extract_to>
존재하지 않는 디렉토리에 캔 포인트 (명령이 필요한 디렉토리를 만들거나 실패합니다).
어떤 이유로 든 설치 UI를 싫어하는 경우 /qr
옵션을 추가 할 수 있습니다 . 이렇게하면 속성 로깅 프로세스가 손상되지 않으면 서 UI가 '감소'되고 UI가 제거 될 수 있습니다. 그러나 축소 된 UI (즉 , /qb
| /passive
또는 /qn
| /quiet
) 보다 "낮게"이동하면 <msi_property_logfile>
일부 속성이 누락 될 수 있습니다.
지금하는 방법은 Carbon Powershell 모듈을 사용하는 것입니다. 모듈 유형을 설치하려면
Install-Module -Name 'Carbon' -AllowClobber
그런 다음 간단히
msi your_msi_path.msi
예:
msi putty-64bit-0.70-installer.msi
ProductName ProductVersion Manufacturer ProductCode
----------- -------------- ------------ -----------
PuTTY release 0.70 (64-bit) 0.70.0.0 Simon Tatham 45b3032f-22cc-40cd-9e97-4da7095fa5a2
나는 아마도 아마도 그것을하는 가장 좋은 방법은 powershell을 사용하는 것이라고 생각합니다. 다음은 작업을 제대로 수행하는 스크립트입니다. https://gallery.technet.microsoft.com/scriptcenter/Get-MsiDatabaseProperties-09d9c87c
Property
. MSI에서 파킹 주위에 특정 작업 흐름 또는 사용 사례가 있습니까?