비주얼 스튜디오 인스톨러 프로젝트 : 커스텀 액션
기본적인 파일 복사는 Microsoft Visual Studio Installer Projects 를 이용하는 것으로 끝이 납니다.
하지만 세세한 추가작업이 필요한 경우 CustomAction 이란 것을 추가해 주어야 합니다.
프로젝트 추가
솔루션 탐색기 -> 솔루션 오른쪽 클릭 -> Add -> New Project
클래스 라이브러리
를 검색합니다.
여러가지의 클래스 라이브러리가 검색되는데 C#
이고 .dll
이란 글자가 들어간 것을 선택합니다.
.NET Framework 4.7.2 를 선택해 줍니다.
(윈도우에 기본으로 설치되어 있습니다.)
설치 관리자 클래스 추가
CustomAction 오른쪽 클릭 -> Add -> 클래스 -> 설치 관리자 클래스 를 추가합니다.
이름은 CustomInstaller.cs 로 해줍니다.
Class1.cs 는 삭제합니다.
CustomInstaller.cs 를 아래처럼 코드를 작성해줍니다.
do something
부분에 작업이 필요한 코드를 추가해 줍니다.
빌드를 합니다.
namespace CustomAction
{
[RunInstaller(true)]
public partial class CustomInstaller : System.Configuration.Install.Installer
{
public CustomInstaller()
{
InitializeComponent();
}
private string programFilesPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
// CustomActionData
stateSaver.Add("TARGETDIR", Context.Parameters["TARGETDIR"].ToString());
}
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
// do something
}
}
}
설치 프로젝트에 기본 출력 추가
설치 프로젝트 오른쪽 클릭 -> View → 파일 시스템
Application Folder 에 CustomAction 의 기본 출력을 추가해 줍니다.
설치 프로젝트에 사용자 지정 작업 추가
설치 프로젝트 오른쪽 클릭 -> View → 사용자 지정 작업
Install/Commit 을 추가해 줍니다.
위 소스코드를 확인해 보시면 Install/Commit 에 대해서만 코딩이 되어 있습니다.
설치 프로그램 업그래이드
기존 설치 프로그램으로 설치 후 다시 업그래이드 버전을 설치하려면 https://www.skyer9.pe.kr/wordpress/?p=10370 를 참조해서 dll 버전을 올려주어야 합니다.
그렇지 않으면 신규 dll 이 설치되지 않습니다.
데이타 전달
CustomActionData 을 이용해 값을 전달할 수 있습니다.
/name="value" 형식이 기본이고, 여러개를 전달하려면
/name1="value1" /name2="value2" 로 합니다.
/TARGETDIR=”[TARGETDIR]\” 와 같이 값이 디렉토리인 경우 닫는 따옴표 앞에 (역슬러쉬)를 추가해야한다.
/TARGETDIR=[TARGETDIR] 와 같이 따움표를 넣지 않는 것이 좋다.
Install
Install 은 설치파일을 설치하기 이전에 실행된다.
즉, 기존에 커스텀액션이 없다가 추가된 경우, Install 부분은 실행되지 않는다.
또는 기존에 있더라도 기능이 변경된 경우, 현재 버전이 아닌 이전 버전의 커스텀 액션이 실행된다.