2010-01-14 2 views
3

지금까지 WIX가 내가 가장 좋아하는 가장 직관적이고 사용하기 쉬운 언어/시스템이 아니라고 생각합니다.WIX 속성 값 대체 및 CAQuietExec

사용자 지정 대화 상자를 만들고 데이터를 입력 한 다음 설치 로그에서 값을 확인했습니다. 그것이 내가이 참조 값을 사용하는 시간이 올 때

MSI (c) (C8:A4) [14:42:37:137]: PROPERTY CHANGE: Modifying VARRADIOBUTTONENVIRONMENT property. Its current value is 'Dev'. Its new value: 'QA'. 
MSI (c) (C8:A4) [14:42:41:448]: PROPERTY CHANGE: Modifying VARTEXTSETTINGSFILENAME property. Its current value is 'C:\Path\SettingsFileGenerator.xml'. Its new value: 'Test1234.txt'. 

나중에 :

Action ended 14:42:43: InstallFinalize. Return value 1. 
MSI (s) (BC:F8) [14:42:43:676]: Doing action: QtExec1 
Action 14:42:43: QtExec1. 
Action start 14:42:43: QtExec1. 
MSI (s) (BC:F4) [14:42:43:682]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIC4A7.tmp, Entrypoint: CAQuietExec 
MSI (s) (BC!BC) [14:42:43:690]: PROPERTY CHANGE: Deleting QtExecCmdLine property. Its current value is '"[INSTALLLOCATION]XmlPreprocess.exe /i:web.config /e:[VARRADIOBUTTONENVIRONMENT] "'. 
CAQuietExec: Error 0x8007007b: Command failed to execute. 
CAQuietExec: Error 0x8007007b: CAQuietExec Failed 
Action ended 14:42:43: QtExec1. Return value 3. 
Action ended 14:42:43: INSTALL. Return value 3. 
Property(S): StartIIS7ConfigTransaction = ScaConfigureIIs 

그리고 마지막에

그것은 모든 속성을 덤프 때 그것을이 보여줍니다

속성 (S) : QA = VARRADIOBUTTONENVIRONMENT 공간 (S) = VARTEXTSETTINGSFILENAME Test1234.txt 공간 (S) VerifyCurrentPropValueOfEnv = VARRADIOBUTTONENVIRONMENT]

여기 내 코드 조각입니다. 방금 속성 ID를 모두 대문자로 변경하고 내가 본 다른 게시물을 기반으로 secure = "yes"를 추가했습니다. 나는 Secure = "yes"의 유무에 관계없이 시도했다.

 <Property Id="VARRADIOBUTTONENVIRONMENT" Secure="yes">Dev</Property> 
     <Property Id="VARTEXTSETTINGSFILENAME" Secure="yes">C:\Path\SettingsFileGenerator.xml</Property> 

     ...then later... 

       <Property Id="VerifyCurrentPropValueOfEnv" Value="[VARRADIOBUTTONENVIRONMENT]"/> 
     <Property Id="QtExecCmdLine" Value="&quot;[INSTALLLOCATION]XmlPreprocess.exe /i:web.config /e:[VARRADIOBUTTONENVIRONMENT] &quot;"/> 
     <CustomAction Id="QtExec1" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check"/> 


<InstallExecuteSequence> 
<Custom Action="QtExec1" After="InstallFinalize"><![CDATA[NOT(Installed)]]></Custom> 
</InstallExecuteSequence> 

설치가 끝나면 XmlPreProcess.exe가 설치 디렉토리에 설치되어있는 것을 볼 수 있습니다.

질문 :

  1. 내가 값을 대체 할 수 잘못하고 있어요 뭔가가 있나요?

  2. 더 나은 오류를 기록하고 설치 로그에 명령 창 출력을 표시한다고 말했기 때문에 CAQuietExec을 사용하고 있습니다. 나는 명령 창을 보지 않는 것에 대해 정말로 신경 쓰지 않는다. 나는 이것이 무엇을 의미하는지 알아내는 방법을 모르겠다. "CAquietExec : 오류 0x8007007b : 명령을 실행하지 못했습니다.". XmlPreprocess.exe를 호출하려고하는 WIX 오류이거나 XmlPreprocess에 들어가서 오류가 발생했는지 여부는 알 수 없습니다.

감사합니다,

닐 월터스 나는이 문제를 볼 수 있다고 생각 로그 추출물을 보면

답변

8

, 당신은 전체 명령 줄을 인용 한 대신이 시도 :

<Property Id="QtExecCmdLine" Value="&quot;[INSTALLLOCATION]XmlPreprocess.exe&quot; /i:&quot;[INSTALLLOCATION]web.config&quot; /e:[VARRADIOBUTTONENVIRONMENT]"/> 
+0

수십 개의 순열 중 하나에서 피곤하다고 생각하지만 지금은 다시 시도 할 것입니다. 감사! – NealWalters

+0

고마워, 그게 달릴거야! 이제 어떻게 적절한 변수를 전달 하는지를 어떻게 결정할 수 있습니까? – NealWalters

+0

@Neal, 로그를 분석하여 거기에서 가져올 수 있어야합니다. – saschabeaumont