2016-09-13 4 views
0

Wix 설정이있는 C# 응용 프로그램이 있습니다. ExitDialog을 2 개의 체크 박스 (this 다음)로 사용자 정의하고, 내 응용 프로그램을 실행하는 데 사용하며, 다른 하나는 선택적 설치 (uEye 카메라 용)를 실행하는 데 사용됩니다.Wix 설정에서 .exe를 실행할 수 없습니다.

첫 번째 체크 박스는 다음과 같습니다

<!-- Set checkbox for launch my application --> 
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch $(var.product)"/>  
<CustomAction Id="SetExecVR3" Property="WixShellExecTarget" Value="[#MyApplication.exe]"/> 
<CustomAction Id="DoExec" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" Return ="ignore"/>  

두 번째 : 내 설치가

<UI> 
    <UIRef Id="WixUI_Custom"/> 
    <Publish Dialog="MyExitDialog" 
      Control="Finish" 
      Event="DoAction" 
      Value="SetExecVR3">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish> 
    <Publish Dialog="MyExitDialog" 
      Control="Finish" 
      Event="DoAction" 
      Value="DoExec">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish> 

    <Publish Dialog="MyExitDialog" 
      Control="Finish" 
      Event="DoAction" 
      Value="SetExecUEye">WIXUI_EXITDIALOGUEYECHECKBOX = 1 and NOT Installed</Publish> 
    <Publish Dialog="MyExitDialog" 
      Control="Finish" 
      Event="DoAction" 
      Value="DoExec">WIXUI_EXITDIALOGUEYECHECKBOX = 1 and NOT Installed</Publish> 
</UI> 

:

<!-- Set checkbox for launch install uEye --> 
<Property Id="WIXUI_EXITDIALOGUEYECHECKBOXTEXT" Value="Launch install uEye"/>  
<CustomAction Id="SetExecUEye" Property="WixShellExecTarget" Value="./Resources/uEye64_47100_WHQL.exe"/> 

그리고 내 윅스 UI (this 나를 도와)가있다 :

Setup tree

MyApplication.exe의 체크 박스는 정상적으로 작동하지만 다른 하나는 정상적으로 작동하지 않습니다. 생성은 로컬 디렉토리에 uEye64_47100_WHQL.exe을 복사하지 않았고 옵션을 체크하지 않으면 아무것도 추가하지 않습니다.

나는 WiX로 시작하고 있는데, 나는 무엇을 놓쳤는가?

편집 :

지금 나는 .exe와 구성 요소를 가지고있다. 파일이 복사되었지만 실행할 수 없습니다. MSIEXEC와 로그 I은 할 :

MSI는 (c) (C4 : B8) 12 : 45 : 35 : 109] 참고 : 1 : 2,228 2 : 3 : 오류 4 : ErrorError FROM Message를 선택 = 1721 정보 1721.There이 Windows Installer 패키지에 문제가 있습니다. 이 설치를 완료하는 데 필요한 프로그램을 실행할 수 없습니다. 지원 담당자 또는 패키지 공급 업체에 문의하십시오. 작업 : SetExecUEye, 위치 : C : \ uEye64_47100_WHQL.exe, 명령 :이 오류를 이해하지 않고, 파일이 C에 왜 몰라

는 : \ (나는 그것을 찾을 수 SourceDir을 사용)

Edit2가 :

생성 된 구성 요소 :

<Component Id="uEye64_47100_WHQLexe" Directory="TARGETDIR" Guid="{1BD47632-42D5-4C56-B207-1E6B1005488C}"> 
    <File Id="uEye64_47100_WHQLexe" Source="./Resources/uEye64_47100_WHQL.exe" KeyPath="yes" Checksum="yes" Compressed="no" Vital="no"/> 
    </Component> 

그리고 디렉토리 :

uEye64_47100_WHQLexe를 내 릴리스 폴더에서만 복사하도록 정의하는 방법은 무엇입니까? TARGETDIR이 C : \

답변

1

으로 설정되어 있습니다. 복사하고 설치시 실행하려면 주 .exe에 대해 uEye64_47100_WHQL.exe에 대해 다른 구성 요소를 만들어야합니다. 리소스 폴더에만있는 경우 컴파일러 자체에 파일 소스가 추가되지 않으므로 파일 소스로 컴파일 할 때 참조 할 수 있습니다. 그래서

<Component Id="uEye64_47100_WHQLexe" Directory="APPLICATIONFOLDER" Guid="*"> 
    <File Id="uEye64_47100_WHQLexe" Source="./Resources/uEye64_47100_WHQL.exe" KeyPath="yes" Checksum="yes" /> 
</Component> 

같은 구성 요소를 만든 다음이 MyApplication.exe에 대한 같은 WixShellExec를 사용하여 사용자 지정 작업에 사용할 수 있습니다.이 WixShellExecTarget 재산 ;-)

게시 덤비는하지 않고 직접 사용할 수 있기 때문에 그러나 나는 UI의 일부가보다 것이다

<CustomAction Id="RunuEye64_47100_WHQLexe" FileKey="uEye64_47100_WHQLexe" ExeCommand="" Return="ignore" Impersonate="yes" />

같은 두 파일에 대한 사용자 지정 작업을 정의 할 권합니다

Event="DoAction" 
Value="RunuEye64_47100_WHQLexe"> 
+0

'CustomAction'을 모두 수정했습니다. 이제 Action에 의해 하나의'Publish' 만 있습니다 :-). 또한 uEye.exe의 구성 요소를 추가했습니다. 이제 파일이 내 설치 폴더에 복사됩니다. 하지만 "Install install uEye"상자를 체크하면 커서가 1 초 동안 기다리면서 설정이 닫히고 아무 일도 일어나지 않습니다. .exe 파일에는 관리자 권한이 필요합니다. 이유가 있습니까? –

+0

로그를 사용하여 코드를 편집했습니다. –

+1

이제 설치 위치에 파일을 복사하지만 C : \에서 실행하려고합니까? 지금 보시다시피 Component와 CustomAction 코드를 추가 하시겠습니까? 구조가 이상적입니까? Btw SourceDir은 루트 디렉토리를 의미합니다. 디렉토리 트리가 만들어 졌으므로 C : \ – Mischo5500

관련 문제