C#

[NSIS]설치된 프로그램 URL 호출로 실행하기(feat.레지스트리)(스크립트 편집-2)

ㅋㅋ! 2024. 12. 26. 14:08

NSIS 시리즈
 

GitHub - idleh4021/nsis-installer-sample: A sample project demonstrating how to create an installer using NSIS

A sample project demonstrating how to create an installer using NSIS - idleh4021/nsis-installer-sample

github.com

Setup 프로그램(.exe) 만들기 (NSIS)

[NSIS]설치프로그램 아이콘 변경(스크립트 편집-1)

[NSIS]URL 호출로 설치된 프로그램 실행하기(feat.레지스트리)(스크립트 편집-2)


이번에는 스크립트를 편집하여 설치된 프로그램을 URL로 호출하여 실행해보도록 하자.

준비물

1. 설치 파일 스크립트

2. 프로그램 소스코드

작업순서

레지스트리 등록

1. 스크립트 파일을 연다.

2. 레지스트리를 추가/제거 해주는 스크립트를 입력한다.

위는 프로그램을 설치할때 레지스트리를 등록해주는 스크립트

  ;Create Regi
  WriteRegStr HKCR "NSISSample" "URL protocol" ""
  WriteRegStr HKCR "NSISSample\shell" "" "open"
  WriteRegStr HKCR "NSISSample\shell\open" "" "command"
  WriteRegStr HKCR "NSISSample\shell\open\command" "" '"$INSTDIR\NSISSample.exe" "%1"'

아래는 프로그램을 제거할 때 레지스트리를 같이 제거해주는 스크립트

  ;Delete Regi
  DeleteRegKey HKCR "NSISSample"

3. 저장 후 컴파일

4. 프로그램 설치 후 레지스트리 확인

포스팅의 내용과 동일하게 진행했다면 아래 경로에 레지스트리가 등록된 것을 확인할 수 있다.

컴퓨터\HKEY_CLASSES_ROOT\NSISSample\shell\open\command

5.URL호출 및 프로그램 실행 확인

nsissample://

웹 브라우저를 실행하고 위의 URL로 접속하면 프로그램을 실행할 수 있다.

URL로 실행프로그램을 호출 하면서 파라미터를 전달하고 싶다면?

1. 스크립트 편집 (파라미터 보내기)

위 내용을 그대로 따라했다면 레지스트리의 작업은 이미 끝났다.

  ;Create Regi
  WriteRegStr HKCR "NSISSample" "URL protocol" ""
  WriteRegStr HKCR "NSISSample\shell" "" "open"
  WriteRegStr HKCR "NSISSample\shell\open" "" "command"
  WriteRegStr HKCR "NSISSample\shell\open\command" "" '"$INSTDIR\NSISSample.exe" "%1"'

레지스트리를 편집하는 과정으로 돌아가보면 실행프로그램을 매핑하는 구문 옆에 "%1"이 붙어있는데,

이게 바로 파라미터를 뜻한다.

파라미터는 하나만 전달 가능하고,
여러개의 파라미터를 받는 것은 구분자를 정하여 실행프로그램 내에서 작업을 해야한다.

2. 실행프로그램 소스코드 편집 (파라미터 받기)

C#(winform,WPF)의 경우에는 아래코드를 통해 실행프로그램에서 파라미터를 받을수 있다.

string[] arr = Environment.GetCommandLineArgs();

arr[0]에는 실행프로그램의 경로가 들어있고,

arr[1]에는 전달받은 파라미터가 들어가있다.

3. 설치프로그램 컴파일

변경된 실행프로그램으로 설치파일을 다시 컴파일하여 설치한다.

4.URL + 파라미터 호출

nsissample://par1;par2;par333

한글을 파라미터로 보내고 싶다면?

파라미터를 한글로 전달하면 URL이 인코딩되어 전달된다.

URL 인코딩된 데이터

아래 링크를 참조하여 해결

https://build.tistory.com/34

끝.