오늘은 Advanced Installer를 사용해서 저번에 만든 FTP 프로그램을 실행 프로그램으로 만들어 보겠습니다.
Advanced Installer는 생소한 플랫폼이라 그런지 구글 검색을 해도 설명이 잘 안나와 있더라구요. 그래서 제가 공부하고 배웠던 내용을 정리하고자 블로그를 작성하게 되었습니다.
🟫 Advanced Installer 란?
Advanced Installer는 몇 번의 클릭만으로 애플리케이션에 대한 Windows 앱 패키지를 생성하는 데 도움이 되는 무료 GUI 기반 데스크톱 앱 패키징 도구를 제공합니다.
간단하게 요약하면 내가 만든 프로젝트를 패키징 하여 배포 할 수 있게 만들어주는 소프트웨어 패키징 툴입니다.
저도 직접 사용해보니 과정이 간단해서 사용하는데 어려움이 없었습니다.
🟩 준비물
Installer를 사용하기 전에 준비해야 할 몇가지 과정이 있습니다. 저는 아래와 같은 조건에서 실행하였습니다.
우선 저는 Visual studio를 사용해서 FTP 프로그램을 배포할 것입니다. 이를 위해서 방화벽 설정을 해야 하며, DB를 사용해서 파일이 전송되었을 때의 기록을 담을 것입니다. 참고로 DB는 MSSQL을 사용했습니다.
DB또한 원격 접속이 가능하도록 만들어야 하기 때문에 SQL Configuration Manager에서 TCP 포트를 열어줄 것입니다.
그리고 Database, 사용자, Table 생성은 SQL 스크립트를 사용해 Advanced Installer에서 패키지 설치와 동시에 만들어줄 것입니다.
쉽게 설명해 Advanced Installer에서 Database, 사용자,Table을 만들고 Visual studio에서 만든 프로젝트에는 DB 접속, Table 조회, 삽입, 삭제 등의 코드만 존재합니다.
- 해야 할 것
1. 방화벽
2. TCP 포트 설정
3. Database, Table, 사용자 생성
4. 프로그램 바로 가기 링크
참고로 저는 Enterprise 환경에서 실행했습니다.
🟥 실행 파일 이름 설정
Product Details 태그를 들어가면 내가 만들 데스크탑의 이름과 버전 publisher를 설정할 수 있습니다.
추후에 앱의 이름을 설정할 수 있으며 publisher같은 경우는 회사에서 배포를 했으면 회사 이름을, 개인 프로젝트인 경우는 본인 이름을 적어주시면 될 거 같습니다.
🟩 설치 경로 설정
Install Parameters 태그에 들어가면 타겟 컴퓨터에 어느 경로에 패키지가 설치될 지 설정할 수 있습니다.
기본값은 [ProgramFilesFolder][Manufacture]\[ProductName]입니다. 해석하자면
C:\Program Files\위에서 만든 Publisher이름\위에서 만든 Product Name 경로에 설치가 됩니다.
콤보박스를 클릭해 다른 경로에 설치를 할 수도 있습니다. [WindowsVolume][ProductName] 도 있는데 해석하자면
C:\위에서 만든 ProductName 경로에 설치가 됩니다.
🟨 설치할 파일들 삽입하기
Files and Folders 태그에 들어가면 내가 설치할 파일 및 폴더들을 삽입할 수 있습니다. 저는 Application Folder에 Visual studio에서 Release한 FTP 프로그램 실행파일을 넣었습니다.
그리고 위에서 말했듯이 TCP 포트를 열어주는 설정이 필요했는데, 저는 이것을 batch 파일로 실행이 되도록 만들었습니다. 참고로 batch 파일을 삽입할 때는 임시 파일을 미리 만들어줘야 합니다. 안그러면 실행이 안됩니다. (이것때매 몇시간을 날렸습니다...😭)
저는 임시 파일을 Temporary 폴더 넣어줬습니다. 임시 파일을 생성하려면 마우스 우클릭 - Add Temporary files 하면 추가할 수 있습니다.
그리고 나의 실행 파일을 바로가기로 만들고 싶다면, 실행 파일을 우클릭 - New Shortcut To - Installed File를 클릭하면 Application Shortcut Folder에 자동으로 바로가기 파일이 생깁니다.
바로 가기 파일은 타겟 컴퓨터에서 윈도우 검색을 통해 사용할 수 있기 때문에 사용자가 더 편리하게 사용할 수 있습니다.
🟪 SQL Server 설치하기
또한 저는 DB를 사용하기 때문에 미리 MSSQL이 설치되어 있어야 합니다. 이때 필요한 태그가 Prerequisites 입니다.
패키지가 설치되기 전에 사전에 필요한 항목들을 설치해주는 역할을 합니다. 이미 타겟 컴퓨터에 필수 요소가 존재한다면 설치를 진행하지 않고 없으면 설치부터 진행이 됩니다.
저는 SQL Server Express2019가 필수로 설치되어야 하기 때문에 체크를 했습니다.
참고로 설치 파일을 실행시키는 과정도 타겟 컴퓨터에서 사용자가 직접 실행해야 하기 때문에 이 부분을 알려주는 설명서도 보내준다면 좋을 거 같습니다. (개발자가 아닌 사람이 SQL Server를 설치하는게 쉬운일은 아니니깐...)
⬜ 방화벽 설정
MSSQL 원격 접속을 위해서 TCP 포트를 허용하는 방화벽을 설정해야 합니다.
방화벽 설정은 Windows Firewall 태그에서 진행하시면 됩니다. 저는 인바운드 아웃바운드 둘다 동일한 조건을 주었습니다.
🟦 SQL 스크립트 적용(DB 생성, Table 생성, User 생성)
SQL 스크립트를 적용시키기 전에 SQL Server에 연결할 수 있는 다이얼로그를 생성해줘야 합니다.
Dialogs 태그에 가서 FolerDlg 우클릭을 하고 Add Dialog를 합니다. 그러면 추가할 다이얼로그가 나오는데, SQL Server에 연결 해주는 설정을 모두 제공해주는 SQLSerberConnectionDlg 태그를 추가합니다.
이후 SQLDatabase 태그에 가면 DlgPredefinedConnection이라는 DB connection 설정이 나옵니다.
DlgPredefinedConnection을 우클릭 후 스크립트를 추가해줍니다. 파일을 추가 할 수도 있고, lnline으로 삽입할 수도 있습니다.
저는 DB, 사용자, Table, 임시 데이터를 추가했습니다. 이렇게 설정을 하면 패키지가 설지되는 동시에 SQL문이 실행이 되서 visual studio에서는 따로 설정을 안해줘도 됩니다.
⬛ Custom Action
원하는 다이얼로그 이벤트에 파일을 실행 시키고 싶다면 Custom Action에서 추가를 하면 됩니다.
저는 SQL Server Configuration Manager에서 TCP 포트를 여는 배치 파일을 이전 과정에서 추가했습니다.
이 파일을 원하는 다이얼로그에 추가를 해보겠습니다.
참고로 Action을 추가할 때 두가지 옵션이 있습니다. 왼쪽은 Advanced Installer가 자동으로 해당 Action을 경우에 맞는 위치에서 실행시켜주는 것이고 오른쪽은 사용자가 직접 원하는 위치에서 해당 파일을 실행시켜주는 설정입니다.
저는 원하는 다이얼로그에서 실행파일을 실행시키고 싶어서 오른쪽 설정을 추가했습니다.
원하는 다이얼로그의 이벤트에 위의 사진과 같이 추가를 해주시면 됩니다!!!
저는 이러한 방법으로 실행을 시켜보니 잘 되는 모습을 볼 수 있었습니다. 아마 다른 분들은 다른 설정으로 하셔서 저랑 다를 수도 있지만 물어보시면 제가 아는 선에서 알려드리도록 하겠습니다!!
(이거 공부하느랴고 삽질을 많이 해서.. ㅎ)