2017-02-06 4 views
0

간단한 Wi-Fi 도구 3.10을 사용하여 간단한 C# 응용 프로그램의 설치 프로그램을 만듭니다. 공식 문서의 튜토리얼을 따라했지만 다음과 같은 문제가 있습니다. 응용 프로그램 디렉토리에 .txt 파일을 추가해야하지만 설치 프로그램은 응용 프로그램의 실행 파일 만 추가합니다.WiX 도구 - 설치 프로그램이 설치 디렉토리에 파일을 추가하지 않습니다.

디렉토리 구조 :

<Fragment> 
<!-- Step 1: Define the directory structure --> 
<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore"> 
    </Directory> 
    </Directory> 
</Directory>  
</Fragment> 

추가 파일 :

<Fragment> 
    <!-- Step 2: Add files to your installer package --> 
    <DirectoryRef Id="APPLICATIONROOTDIRECTORY"> 
     <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb"> 
     <File Id="Controllore.exe" Source="MyPath\Controllore.exe" KeyPath="yes" Checksum="yes"/> 
     </Component> 
     <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca"> 
     <File Id="param.txt" Source="MyPath\param.txt" KeyPath="yes"/> 
     </Component> 
    </DirectoryRef> 
    </Fragment> 
    <Fragment> 
    <!-- Step 3: Tell WiX to install the files --> 
    <Feature Id="MainApplication" Title="Main Application" Level="1"> 
     <ComponentRef Id="Controllore.exe" /> 
     <ComponentRef Id="param.txt" /> 
    </Feature> 
    </Fragment> 

과 말에, 나는이 줄을 추가해야한다, 그렇지 않으면 설치 여기에 .wxs 파일의 XML입니다 아무 것도 설치하지 않습니다 :

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="APPLICATIONROOTDIRECTORY"> 
    <Component Id="CMP_Controllore"> 
    <File Source="$(var.Controllore.TargetPath)" KeyPath="yes" /> 
    </Component> 
    </ComponentGroup> 
</Fragment> 
+1

WIX? 도망 가라. 먼 곳까지 달려 가라. –

+0

나는 WIX가 마음에 든다. 너는 그걸 생각할 필요가있다. – Polyfun

+0

적어도 installshield가 아닙니다. –

답변

0

설정 한 방식대로 재 배열 할 수 있습니다. 나는 처음에는 WiX를 사용하는 법을 배우면서 파편으로 작업하려고 애쓰는 것을 발견했다. 나는 그것이 번거 로움의 더 많은 것 더 큰 제품에 대한 유지 보수 때문에 그 일을 선호하는 방법이 있다는 모르겠지만, 나는이 같은 (주어진 파일 이름)이 : 작은 프로젝트의 경우

<?xml ...?> 
<Wix ...> 
    <Product ...> 
    <Package ... /> 
    <MajorUpgrade .../> 
    <MediaTemplate EmbedCab="yes" /> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore"> 
      <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb"> 
      <File Id="Controllore.exe" Source="$(var.Controllore.TargetPath)" 
        KeyPath="yes" Checksum="yes"/> 
      </Component> 
      <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca"> 
      <File Id="param.txt" Source="$(var.Controllore.TargetDir)param.txt" KeyPath="yes"/> 
      </Component> 
     </Directory> 
     </Directory> 
    </Directory> 
    <Feature Id="MainApplication" Title="Main Application" Level="1"> 
     <ComponentRef Id="Controllore.exe" /> 
     <ComponentRef Id="param.txt" /> 
    </Feature> 
    </Product> 
</Wix> 

을 , 모든 관련 정보를 디렉토리에 직접 저장하고 조각에 대해 걱정하지 않는 것이 훨씬 쉽습니다. 분명히 큰 프로젝트를 수행하는 팀에서 일해야한다면 합리적이지 않습니다.

+0

코드를 사용해 보았지만 작동하지 않습니다. 패키지 태그가 닫힌 곳은 인 것으로 보입니다.을 제거하면 더 많은 오류가 발생합니다. "symbold Media에 대한 참조가 해결되지 않았습니다 : 제품. * 섹션의 1. 각 파일 태그마다 하나씩 있습니다. – SamuRed

+0

@SamuRed 해결되었습니다. 죄송합니다. WiX에서 생성하는 캐비닛 파일을 포함시키기 위해 미디어 템플릿이 있습니다. EmbedCab = "yes"'를 MediaTemplate에 추가하면 여전히 오류가 발생합니까? – Meloviz

+0

XML 코드가 이제 정상입니다. param.txt 파일의 파일 태그에 오류가 발생합니다. 파일을 찾을 수없는 것처럼 보이지만 오류로 인해 파일의 올바른 경로가보고되어 파일이 존재합니다. – SamuRed

2

다른 프래그먼트가 참조하지 않는 한 프래그먼트가 처리되지 않는다는 것을 이해해야합니다. 그런 다음 전체 조각이 원자 적으로 처리됩니다.

ISWIX (http://iswix.codeplex.com)라는 오픈 소스 프로젝트가 있습니다. VS 프로젝트 템플릿과 그래픽 디자이너가 포함되어있어 더욱 빠르게 작업 할 수 있습니다. 그런 다음 파편을 구성하는 방법을 살펴보고 모두가 어떻게 함께 왔는지 확인하고 진행 방법을 직접 결정할 수 있습니다.

여기 2 분짜리 짧은 비디오로 I 1) 데스크톱 응용 프로그램을 만들고 2) WiX/IsWiX 설치 프로그램을 만듭니다. 정말 쉽습니다.

https://www.youtube.com/watch?v=nnV_OU6fk8c

+0

감사합니다. 나는 분명히 도구를 사용해 볼 것이지만 지금은 더 빠른 해결책을 찾고 있습니다. – SamuRed

+0

EXE로 DropBox ([email protected])에 초대장을 보내면 10 분 안에 설치 프로그램이 나옵니다. –

관련 문제