본문 바로가기

Study

윈도우 설치파일 만들기(4) - Harvest Tool(Heat)

윈도우 설치파일 만들기(4) - Harvest Tool(Heat)



이전 글에서 2가지 File을 설치하는 인스톨러 파일을 생성해 설치해 보았다. 



이와 같이 <ComponentGroup>에 <File>을 포함한 <Component>들을 하나씩 추가해 주었다.

이전 예제처럼 파일 2개를 추가하는 간단한 작업이라면 손수 작업이 가능했겠지만 파일 갯수가 늘어나고 서브폴더가 많아지면 굉장히 복잡하고 작업량이 많아진다.


이런 복잡한 파일들을 위한 Fragment들을 자동으로 생성해 주는 것이 바로 Wix Toolset에 포함된 Harvest Tool(Heat)이다. Heat을 사용하면 Fragment가 적힌 wxs 파일이 Output으로 나온다.




1. 기존에 만들었던 프로젝트에서 프로젝트 우측클릭 - Properties에 들어간다.





2. Build 탭에서 Output path를 설정해 준다. Build파일의 output 경로를 설정해 주는 것이다.





3. Build Events 탭에서 Pre-build Event Command Line에서 다음과 같이 입력한다. 문법에 오류가 있을 경우 에러가 발생하니 잘 적용하도록 하자.


"[Wix Toolset 경로]bin\heat.exe" dir [설치할 폴더 경로]설치할 폴더 -cg cg_SignTest -gg -scom -sreg -sfrag -srd -out "[생성할 경로]파일명.wxs"


아래는 실제 적용 예제이다.


"C:\Program Files (x86)\WiX Toolset v3.11\bin\heat.exe" dir C:\Users\Administrator\Desktop\SignPackage\SignTest -cg cg_SignTest -gg -scom -sreg -sfrag -srd -out "C:\Users\Administrator\Documents\Visual Studio 2015\Projects\SetupProject1\SetupProject1\FilesFragment.wxs"





4. 설정 후 빌드해주면 2번에서 [생성할 경로]에 파일명.wxs가 생성되어 있음을 확인할 수 있다.





5. 프로젝트 아래의 References에서 우측클릭해서 Add Reference를 눌러 준다.





6. 다음처럼 대화창이 뜨면 4번에서 생성된 wxs 파일을 선택하고 Add 버튼을 눌러 프로젝트에 추가해준다.





7. 그럼 다음과 같이 FilesFragment.wxs파일이 우측 창 Solution Explorer에 추가된 것을 확인할 수 있다.

또한 FilesFragment.wxs파일의 내용에 [설치할 폴더 경로]설치할 폴더에 관한 Fragment가 저절로 생성된 것을 알 수 있다.


<Fragment> Element가 2개가 나왔는데, 첫번째 Fragment는 Component들을 추가하는 과정이고 두번째 Fragment는 첫번째 Fragment에서 추가한 Component를 ComponentGroup에 넣어주는 과정이다.


<펼친 모습>


<접은 모습>




8. 이 Fragment 내용들을 복사해서 Product.wxs아래에 붙여넣기 한다.


<복사>



<붙여넣기>




9. 이제 FilesFragment.wxs는 필요없어졌으니 프로젝트에서 제외시킨다.





10. 이제 복사한 Fragment를 적용시키고 기존의 Fragment를 지우는 일이 남았다.

복사한 2개의 Fragment 중 첫번째 Fragment DirectoryRef Id가 TARGETDIR이다. 이를 INSTALLFOLDER로 바꿔주어<ComponentGroup>이 INSTALLFOLDER에 추가되도록 한다.





11. 복사한 2개의 Fragment 중 두번째 Fragment에 Directory="INSTALLER"를 추가해주어 INSTALLER에 ComponentGroup이 추가되도록 한다.





12. 복사한 2개의 Fragment 중 첫번째 Fragment안에 있는 모든 File들의 경로가 SourceDir로 시작한다. 이 SourceDir을 실제 경로로 바꾸어 주어야 한다.





13. 하나씩 바꾸기엔 너무 많은 양이므로 다음처럼 찾아 바꾸기로 바꾸어 준다. Ctrl + F5를 눌러 찾기창을 띄운 뒤 왼쪽 버튼을 눌러 찾아바꾸기로 변경한다.


   




14. SourceDir을 설치해줄 파일 경로로 바꾸어 준다. 이 프로젝트의 경우는 경로가C:\Users\Administrator\Desktop\SignPackage\SignTest이다. 화살표에 표시된 버튼을 눌러 모두 바꾸어준다.





15. 이 때 바뀌지 말아야 할 부분이 있는데 바로 이 부분이다. TARGETDIR의 Name을 SourceDir로 선언해 주는 부분이므로 바뀐 곳을 다시 SourceDir로 돌려준다.


<이것을>


<이와 같이 변경>




15. 이제 기존에 있었던 Fragment들 중 2번째 Fragment는 지워준다.





16. <Feature>에서 어떤 ComponentGroupRef를 설치할 것인지 변경해주어야 한다. 두번째 Fragment에서 추가해준 ComponentGroup을 참조해 주어야 하므로 Feature 부분의 ComponentGroupRef의 Id를 고쳐준다.





17. 그리고 빌드를 후, msi 파일을 실행하면 우리가 설정해준 폴더의 내용들이 설치된 것을 볼 수 있다.







참고자료


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