2014-09-17 2 views
0

Wix를 처음 사용합니다. 사용자 지정 작업을 실행하기 위해 버전 3.9를 사용하고 있습니다. 파일을 복사하고 설치 및 제거 할 수 있지만 행운과 함께 실행되도록 사용자 지정 작업을 시도하고 있습니다.Wix 사용자 지정 작업이 실행되고 있지 않습니다.

다음은 작은 예입니다. ComponentGroup은 열에 의해 생성 된 다른 파일에 있습니다. 로깅을 사용하여 설치 프로그램을 실행하고 설치시 실패한 작업에 대한 로그 파일에는 아무 것도 표시하지 않습니다. 제거를 실행하면 cmd 프롬프트가 열리는 것을 볼 수 있습니다.

나는 또한 윅스 조건과 그 평가 방법에 대해 혼란 스럽다. 다양한 소스에서이 나는 조건을보고 속성이 0 또는 false

  • 하지 MyProperty가 true를 돌려 설정되어 있지 않은 속성입니다 포함한 모든 값으로 설정되어있는 경우가

    • MyProperty가 true를 돌려주는 것입니다

    조건에 사용되면 MyProperty가 false이면 MyProperty가 false를 반환하지 않습니다. MyProperty가 true 인 경우 조건에서 MyProperty가 false를 반환합니다. 이것은 나를 혼란스럽게하고 설치 제거 과정에서 발생하는 사용자 정의 동작이 나를 혼란스럽게합니다.

    도움을 주시면 감사하겠습니다.

    <?xml version="1.0" encoding="UTF-8"?> 
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
        xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" > 
        <Product Id="*" Name="GtLite" Language="1033" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="0cd4e6db-ec32-42b4-bcb8-1f51f37c7b44"> 
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 
    
        <!-- Specify minimal UI --> 
        <UIRef Id="WixUI_Minimal" /> 
    
        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
        <MediaTemplate EmbedCab="yes" /> 
    
        <!-- Features to install --> 
        <Feature Id="ProductFeature" Title="FunTimes" Level="1"> 
    
         <ComponentGroupRef Id="BinFilesGroup" /> 
        </Feature> 
    
        <CustomAction Id="RunDataUtility" 
            Directory="FUN_FOLDER" ExeCommand="cmd.exe /k &quot;echo hello > [FUN_FOLDER]echo_test.txt&quot;" Execute="immediate" Return='asyncNoWait' /> 
    
    
        <InstallExecuteSequence> 
    
         <Custom Action="RunDataUtility" After="InstallFiles" >NOT INSTALLED</Custom> 
        </InstallExecuteSequence> 
    
    
        <Directory Id="TARGETDIR" Name="SourceDir"> 
    
         <!-- Define Installation folder under Program Data --> 
    
         <Directory Id="ProgramFolder"> 
         <Directory Id="INSTALL_FOLDER" Name="Acme" > 
          <Directory Id="FUN_FOLDER" Name="FunTimes" > 
          </Directory> 
         </Directory> 
         </Directory> 
        </Directory> 
    
        </Product> 
    
    </Wix> 
    
  • +0

    에코 테스트 텍스트 파일의 출처는 어디입니까? 설치하는 경우 파일을 설치하기 전에 즉시 사용자 지정 작업을 실행하기 때문에 사용자 지정 작업을 연기해야합니다. – PhilDW

    +0

    echo_test.txt라는 파일에 대한 에코는 사용자 지정 작업을 실행하는 테스트입니다. 커스텀 애프터 태그를 InstallFinalize로 바꾸었지만, 즉시 실행할 수있게되었습니다. 그리고 이제는 실제 커스텀 액션이 설치 폴더에서 실행 중입니다. 또한 BIN_FOLDER을 FUN_FOLDER (으)로 변경했습니다. 나는 아직도 그것을 아주 잘 이해하고 그것을 이해하고 있습니다. – dgxhubbard

    답변

    1

    명령 줄을 통해 BIN_FOLDER를 전달합니까? 내가 여기에있는 것을 볼 수 없기 때문에 물어 본다. 비록이 명령을 테스트하지는 않았지만 이것이 작동해야한다고 생각합니다. 시도해보고 알려주세요. 이 일을하기 위해 한국 전기 \ 빈 \

    <CustomAction Id="ConfigureApp_Cmd" Property="ConfigureApp" Execute="immediate" 
        Value="&quot;cmd.exe /k&quot; &quot;echo hello > [BIN_FOLDER]echo_test.txt&quot; nopause;" /> 
    <CustomAction Id="ConfigureApp" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="asyncNoWait" Impersonate="no"/> 
    
    <InstallExecuteSequence> 
        <Custom Action="ConfigureApp_Cmd" After="StartServices"><![CDATA[NOT(Installed)]]></Custom> 
        <Custom Action="ConfigureApp" After="ConfigureApp_Cmd"><![CDATA[NOT(Installed)]]></Custom> 
    </InstallExecuteSequence> 
    

    당신은 BIN_FOLDER = C 비슷한을 통과해야 할 수도 있습니다.

    +0

    BIN_FOLDER은 FUN_FOLDER 여야합니다. 예제를 단순화하기 위해 파일을 변경했습니다. – dgxhubbard

    +0

    이제 설치된 유틸리티가 실행됩니다. 나는 에코를 테스트로 사용했다. 나는 그 열쇠가 관례에있는 당신의 상태라고 생각합니다. – dgxhubbard

    관련 문제