0

.MSI 자세한 추적을 이해합니다. http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454.MSI 자세한 정보 추적 만들기 - CustomAction 실행

목표는이에 XmlPreprocess.exe 유사라는 프로그램을 실행하는 것입니다 : xmlpreprocess.exe을 나는 여기에 내가 할 노력하고있어에서 배경입니다으로 VisualStudio 2008 년

를 사용하여 .MSI를 생성 /x:"SettingsFileGenerator.xml "/i:"web.config"/ e : QA/v

/x : parm은 내 사용자 인터페이스 양식 중 하나이며/e : 값은 선택 사항에서 비롯됩니다. 네 개의 라디오 버튼 중. /X : "[SETTINGSFILE]"/i:"[TARGETDIR]web.config "[CUSTOMSETTINGS]/E :

는 I가 거짓, 재산"CustomActionData "속성을"InstallerClass "로 설정 [ENVIRONMENTBUTTON] 그리고 "Arguments"속성을 비워 둡니다.

여기 추적 내용이 나와 있습니다. 내 parms이 적절한 장소 (예 : 라디오 버튼에서 "QA"를 선택)로가는 것처럼 보입니다. 오류는 GUI 화면에서 보는 것과 동일합니다. "설치 프로그램의 일부로 실행되는 프로그램이 예상대로 완료되지 않았습니다. 지원 담당자 나 패키지 공급 업체에 문의하십시오."ErrorIcon 정보는 단순한 잡음이거나 관련성이있는 경우입니다.

MSI (s) (A4:58) [10:46:09:130]: Executing op: CustomActionSchedule(Action=_78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2,ActionType=3090,Source=C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe,,CustomActionData=/x:"c:\Source\TFBIC.RCT.BizTalk\TFBIC.RCT.BizTalk.Deployment\EnvironmentSettings\SettingsFileGenerator.xml" /i:"C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\web.config" /e:QA) 
MSI (s) (A4:58) [10:46:09:728]: Note: 1: 1722 2: _78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2 3: C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe 4: 
MSI (s) (A4:58) [10:46:09:728]: Note: 1: 2262 2: Error 3: -2147287038 
MSI (c) (E0:C8) [10:46:09:763]: Note: 1: 2262 2: Error 3: -2147287038 
DEBUG: Error 2835: The control ErrorIcon was not found on dialog ErrorDialog 
The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2835. The arguments are: ErrorIcon, ErrorDialog, 
**Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.** Action _78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2, location: C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe, command: 
MSI (s) (A4:58) [10:46:11:630]: Note: 1: 2262 2: Error 3: -2147287038 
MSI (s) (A4:58) [10:46:11:630]: Product: TFBIC.RCT.WCFWebServices -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action _78D3A615_0FDF_491D_8BD0_4AA0A0DAE3C2, location: C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\XmlPreprocess.exe, command: 

Action ended 10:46:11: InstallExecute. Return value 3. 
MSI (s) (A4:58) [10:46:11:633]: User policy value 'DisableRollback' is 0 
MSI (s) (A4:58) [10:46:11:633]: Machine policy value 'DisableRollback' is 0 

참고 :

에 msiexec/I "TFBIC.RCT.WCFWebServicesSetup.msi"/ L의 *의 V :이 수행하여 위의 추적을 얻었다 "C를 : \ 로그 \ WebServiceInstall.log"

업데이트 : 아래의 주석을 기반으로 - XmlPreprocess.exe (내 CustomAction)가 0이 아닌 반환 코드를 반환하고 있습니다. 그러면 어떻게 디버깅 할 수 있습니까? 명령 창에 정상적으로 나타나는 결과를 확인해야합니다.

업데이트 01/07 : 프로그램의 출력물을 보지 않고는 디버깅이 불가능합니다. 실제로 필요한 것입니다. 설치 프로그램에서 오류가 발생하면 확인 버튼을 클릭하고 모두 삭제할 때까지 해당 디렉터리의 파일을 볼 수 있습니다. 명령 프롬프트로 가서 xmlpreprocess.exe를 입력 한 다음 위의 로그에서 똑같은 문자열을 복사/붙여 넣기 "/x:"c:\Source\TFBIC.RCT.BizTalk\TFBIC.RCT.BizTalk.Deployment\EnvironmentSettings\SettingsFileGenerator .xml "/i:"C:\inetpub\wwwroot\TFBIC.RCT.WCFWebServicesSetup\web.config"/ e : QA "로 잘 실행됩니다.

누락 된 파일에 대한 Ryan의 지적을 참조하십시오. 감사합니다. 그러나 XmlPreprocess 프로그램의 결과물에 분명히 표시되어야하는 수십 개의 잠재적 오류가있을 수 있습니다. 확실히 출력을 보는 데는 어딘가가 있을까요?

두 가지 가능성이 누락 된 파일이 없습니다 :. 1)의 web.config 자체가 (이있다) 2) 파일의 이름은 사용자 유형에 지금까지 내가 말할 수있는

, 더이 방법은 사용자가 유효한 파일 이름을 입력했는지 확인하고 설치 대화 상자에 "파일 선택기"가 없습니다. 옳은? 또는 아니오?

사용자가 잘못된 파일 이름을 입력 한 경우에도 보다 나은 메시지를 보내야합니다. "설치 프로그램의 일부로 실행되는 프로그램이 예상대로 완료되지 않았습니다. 지원 담당자 나 패키지 공급 업체에 문의하십시오."

은 어쩌면 내가 XmlPreprocess에 대한 내 자신의 C#을 래퍼를 작성해야하고 출력 가로 챌 다음, 그것을 호출하고 ??? 읽어

답변

2

리디렉션에 cmd.exe /C XmlPreProcess.exe ...을 사용하도록 제안한 previous question에서와 마찬가지로 대신 /C으로 시도해 볼 수 있습니다. 그렇다면 어떤 결과물도 계속 있어야하며, 오류가 발생하면 MSI 컨텍스트 내에서 작업 할 수 있어야합니다.

내가 정말로 의심하는 것은 문제는 사용자 지정 작업 일정입니다. 이 조치가 InstallFinalize 전에 예약되고 설치하려는 파일에 대해 작업하려는 경우, 예상되는 위치에 파일이 설치되기 전에 실행됩니다. 이것에 대한 적절한 수정은 일반적으로 스크립트 내 작업 (지연이라고도 함)을 실행하여 InstallFiles와 InstallFinalize간에 일정을 설정함으로써 실제로 해당 위치에서 실행되도록합니다.

최종 사용자에게 더 나은 오류를 제공하거나 파일을 찾아 볼 수있게하는 경우 사용자 지정 작업을 수행하고 DLL 동작이 필요할 수 있습니다 (EXE 작업은 통과/실패 피드백 만 제공 할 수 있음). 탐색 대화 상자를 제공하거나 사용자가 제공하는 경로를 확인하는 것이 더 나은지 (또는 더 쉬운지) 여부는 선택 사항입니다. Visual Studio Installer 프로젝트에서 얼마나 많은 일을 할 수 있는지 확신 할 수 없습니다. (이것은 내가 태그로 사용하고 있다고 가정합니다).

+0

감사합니다.이 추적이 만병 통치약이 될 것이라고 생각했기 때문에 이전에 게시 한 질문을 잊어 버렸습니다. BizTalk 배포 프레임 워크 (BTDF)에서 웹 서비스를 포함하는 다른 방법을 시도 할 것입니다. BTDF는 동일한 서버에 동시에 배포되기 때문입니다. 이전에 NSI를 사용하여 설치 프로그램을 만들었지 만 Microsoft의 기본 제공 Visual Studio 도구 (너무 인상적이지는 않음)로 시도한 첫 번째 "멋진"설치입니다. – NealWalters

+0

BizTalk 세계에있는 누구에게나 내가 시도 할 내용에 대한 설명은 다음과 같습니다. http://biztalkdeployment.codeplex.com/WorkItem/View.aspx?WorkItemId=5675 – NealWalters

+0

수정 사항은 NSIS (NSI가 아님)입니다. http://nsis.sourceforge.net/Main_Page – NealWalters

1

예, ErrorIcon은 노이즈 무시할 수 있습니다. 나는에있어 지금 내 MSI에서이 '잡음'을 제거하는 과정은 그래서 제대로 디버깅 할 수 있습니다.

오류는 cmd를에 '순 HELPMSG 1722'실행 1722

의 Windows 오류를 반환하여 사용자 지정 작업에 의해 발생되고있다 신속한 산출량;

The RPC server is unavailable. 

이 명령은 로컬 RPC 서버 서비스 (시작하지 않은 것, 생각해 보면 Windows에 중요하기 때문에 이상한 것)에 의존하거나 원격 서버가이를보고하고 있다는 것을 의미합니다.

+1

로그에서 올바르게 오류가 발생했지만 잘못된 해석이 표시됩니다. Windows Installer 오류 메시지 (http://msdn.microsoft.com/ko-kr/library/aa372835(VS.85).aspx)에서 1722는 로그에 표시된 것과 같습니다. 프로그램이 0이 아닌 오류 코드를 반환했음을 의미합니다. 프로그램이 오류를보고하거나 리턴 코드를 무시해야합니다. –

+0

감사. 0이 아닌 리턴 코드가 더 적합합니다. 그러나 나는 그것을 디버깅하는 방법을 여전히 잃어 버렸는가? 명령 창에 일반적으로 표시되는 결과를 확인해야합니다. 어쩌면 그것이 추적 될 수 있기를 바랬습니다. 이것은 XmlPreprocess.exe (CodePlex에서 제공)입니다. web.config 파일을 마사지합니다. 당연히 설치 프로그램 외부에서 실행할 수 있으며 제대로 작동합니다. 물론, 그것은 오류를 던질 수 있지만 그 오류가 무엇인지 알아야합니다. 내가 어떻게 할 수 있니? – NealWalters

+0

OK, 또 다른 시도. Win32 오류는 일반적으로 어딘가에 있으며 -2147xxxx 번호라고 생각합니다. 그래서 그것을 calc (또는 copy/paste)에 입력하고 헥스로 전환하십시오. FFFF 문자는 부호 비트로 인해 무시됩니다. Google에서 사용할 수있는 번호 80030002가 있어야합니다. 이 파일을 찾으면 간단한 파일을 찾을 수없는 오류가 발생한 것 같습니다. 나는 틀릴 수도 있지만 가능성이 높습니다. procmon을 동시에 실행하여 누락 된 파일을 확인하거나 MSI 내용을 대상에 수동으로 복사 한 다음 콘솔에서 실행하십시오. –