MSIX 인스톨러를 더블클릭 EXE로 만들어주는 도구 — MSIX Installer Generator

MSIX는 Windows의 최신 패키징 포맷입니다. 샌드박스 기반으로 동작해서 레지스트리나 파일 연결 같은 시스템 변경이 격리되고, 삭제하면 잔여물이 하나도 남지 않습니다. MSIXBundle로 x64, x86, ARM64를 하나의 파일에 담을 수도 있고요.

문제는 배포입니다.

MSIX를 스토어 밖에서 설치하려면 사용자가 개발자 모드를 켜고, PowerShell을 열고, 인증서를 신뢰해야 합니다. 개발자한테는 당연한 과정이지만, 일반 사용자한테는 전부 장벽입니다. Electron이나 Tauri로 앱을 만들어도 MSIX 패키징을 지원하지 않는 프레임워크가 많고요.

그래서 만들었습니다. MSIX Installer Generator는 MSIX 패키징부터 더블클릭 EXE 인스톨러 생성까지 한 번에 처리하는 도구입니다.

어떻게 시작됐나

원래 이 프로젝트는 MSIX와는 관계가 없었습니다.

WinUI 3로 만든 앱을 스토어 밖에서 배포하려고, .atp라는 자체 패키지 포맷을 쓰는 인스톨러 프레임워크를 만들고 있었습니다. 7z로 압축해서 인스톨러에 넘기고, 레지스트리 등록이나 시작 메뉴 바로가기 생성을 인스톨러가 처리하는 구조였습니다. 단순한 EXE 패키징으로는 충분히 잘 동작했고요.

그러던 중에 문득 “MSIX를 쓰면 샌드박스까지 지원하는데, 이걸로 인스톨러를 만들면 어떨까?” 하는 생각이 떠올랐습니다. 기존 .atp 방식은 편리하긴 하지만, 결국 레지스트리에 직접 쓰고 AppData에 폴더를 만드는 전통적인 설치 방식이라 깔끔한 삭제가 보장되지 않습니다. MSIX를 쓰면 Windows가 알아서 샌드박스로 격리하고, 삭제할 때 잔여물이 하나도 남지 않잖아요.

그래서 MSIX 설치 지원을 추가하기 시작했는데, 하다 보니 인증서 생성, 매니페스트 작성, 패키징까지 전부 사용자가 직접 해야 한다는 게 문제였습니다. 프레임워크가 MSIX 패키징을 지원하지 않는 경우도 많고요. 결국 패키징까지 자동화하는 도구를 만들게 됐고, 지금은 MSIX 패키징부터 EXE 인스톨러 구성까지 한 번에 처리하는 형태가 됐습니다.

어떤 문제를 풀고 싶었나

MSIX로 배포하려니 사용자 경험이 너무 안 좋았습니다.

  • “개발자 모드를 켜세요” → 사용자가 당황
  • “PowerShell을 관리자 권한으로 열어서 명령어를 입력하세요” → 더 당황
  • “인증서를 신뢰하세요” → 제일 당황

인스톨러를 더블클릭하면 끝나는 전통적인 EXE 인스톨러의 간편함과 MSIX의 샌드박스 이점을 둘 다 가져가고 싶었습니다.

MSIX Installer Generator가 하는 일

크게 두 가지입니다.

1. MSIX 패키징

인증서 생성, 매니페스트 작성, 빌드 출력 패키징을 GUI에서 처리합니다. 프레임워크가 MSIX 패키징을 지원하지 않아도, 빌드 출력 폴더만 지정하면 됩니다. x64, ARM64 등 아키텍처별 폴더를 추가하면 PE 헤더를 읽어서 자동으로 감지하고, 단일 .msix 또는 다중 아키텍처 .msixbundle을 만들어 냅니다.

2. EXE 인스톨러 구성

만들어진 MSIX를 더블클릭 한 번에 설치되는 독립 실행형 EXE 인스톨러로 변환합니다. 사이드로딩에 필요한 모든 과정(인증서 설치, 의존성 처리 등)을 인스톨러가 알아서 처리합니다. 사용자 입장에서는 그냥 인스톨러를 다운로드하고 실행하면 끝입니다. PowerShell도, 개발자 모드도, 인증서 프롬프트도 나오지 않습니다.

CLI 도구도 있습니다

GUI 말고 CLI 도구(aticmsixgen)도 NuGet에 올려뒀습니다. CI나 AI 자동화 워크플로에서 명령줄로 MSIX 패키징과 EXE 구성을 전부 처리할 수 있습니다. NativeAOT로 빌드해서 런타임 의존성이 없는 단일 실행 파일입니다.

dotnet tool install --global aticmsixgen

인증서 생성, 매니페스트 작성, MSIX 패키징, EXE 구성까지 전부 CLI에서 됩니다.

이런 분들께 잘 맞습니다

  • MSIX로 배포하고 싶은데 사이드로딩 과정이 부담스러운 분
  • Electron, Tauri, WPF 등 MSIX 패키징을 기본 지원하지 않는 프레임워크를 쓰는 분
  • x64, ARM64 등 여러 아키텍처를 하나의 인스톨러로 배포하고 싶은 분
  • CI에서 MSIX 패키징과 EXE 구성을 자동화하고 싶은 분

링크

MIT 라이선스이고, 피드백이나 이슈는 GitHub에 남겨주시면 됩니다. 한국어도 괜찮습니다.

Windows 10/11에서 카카오스토리 알림을 웹 페이지로 연결되는 토스트로 띄워주는 프로그램 – 카카오 스토리 웹 알리미

스크린샷:

소스코드
다운로드

변경내역:

1.0.0: 첫 릴리즈

1.0.1:
– 알림상의 앱 이름을 exe 파일명이 아닌 “카카오스토리 웹 알리미”로 변경
– 업데이트 안내 문구를 한국어로 변경
– 알림이 올 때, 기존에 표시된 알림 중 같은 게시글의 알림이 있는 경우 해당 알림을 지우는 기능 추가
– 알림 내용이 “내용 없음”일 경우, 그냥 해당 내용을 보여주지 않게끔 수정

1.0.2:
시스템 재시작 이후 프로그램이 제대로 실행되지 않고 오류 로그를 대량으로 기록하는 오류 수정
로그인 전용 브라우저 로직과 관련된 오류 수정

1.0.3 / 1.0.4:
시스템 재시작 이후 프로그램이 제대로 실행되지 않고 오류 로그를 대량으로 기록하는 오류 수정

Windows 10/11에서 PC의 리소스를 작업 표시줄의 고정 아이콘으로 확인 – Pin Stats

스크린샷:

소스코드
다운로드

변경 내역:
1.0.0: 최초 릴리즈 / CPU 사용량 조회 및 그래프 조회 기능 제작
2.0.0: GPU/메모리/네트워크 모니터링 기능 추가
2.0.1: GPU 사용량이 올바르지 않게 표시되는 오류 수정 및 컨텍스트 메뉴에 버전,저자 정보 추가
2.0.2: Intel GPU 버그 수정 및 타이머 멈추는 오류 수정
2.0.3:
– 타이머 버그 수정 및 예외 핸들링
– UI 수정
– 팝업 창 위치를 고정된 위치로 설정
– 기타 코드상의 수정
2.0.4: 이전에 관찰된 5개의 사용량 값을 캐싱하여 갑작스러운 사용량 급증 방지
2.0.5:
– CPU 및 GPU 사용량 정확도 개선
– 아이콘 갱신 안되는 버그 수정|
2.0.6: 프로그램 실행 이후 몇 분이 지나면 GDI+ 핸들의 누수로 인해 강제 종료 되는 오류 수정

2.0.7:
관리자 모드에서 프로그램을 실행하여 다음과 같은 자세한 정보를 확인할 수 있습니다:

  • CPU 온도 및 전력 사용량
  • GPU 전력 사용량
  • 배터리 잔량 및 충전 및 방전 속도
  • 배터리 수명 상태(퍼센트)

시작 프로그램 등록과 관련된 몇 가지 버그 수정

2.0.9:
시작 프로세스 버그 수정
배터리 충전률 정보 텍스트의 오타 수정

2.1.0:
오타 수정 (BatteryHealth -> Battery Health)
(실험적) 윈도우 10 지원

2.1.1:
업데이트 확인 기능 추가

2.1.2:
어두운 테마 기기를 위해 아이콘과 텍스트를 검은색으로 표시하는 기능 추가
(Reflection님이 구현하셨습니다. 감사합니다!)
작업 표시줄을 왼쪽 또는 오른쪽으로 정렬한 사용자의 리포트 창 위치가 잘못 표시되던 버그를 수정

2.1.3:
가상 메모리 정보를 표시하는 기능 추가
초당 스토리지 읽기/쓰기 속도를 표시하는 기능 추가
정보량 증가에 따른 리포트 창 크기 증가
리포트 창 초기 로딩 시간 및 타이머 정확도 개선

2.1.4: 처음 실행 시 시스템 테마 설정에 따라 아이콘 테마 색상 자동 설정

2.1.5:
코드베이스 리팩토링
기능: 전용 모니터링 디스플레이를 위한 H/W 모니터

2.1.6:
모니터 감지 관련 버그 수정 (H/W 모니터)

2.1.7:
사소한 UI 수정

2.1.8:
기능: 이제 팝업 창/하드웨어 모니터 창에 배경 이미지를 설정할 수 있습니다.

2.1.9:
기능: 컨텍스트 메뉴의 메뉴를 통해 하드웨어 목록을 새로 고칠 수 있습니다.
오타 수정
코드베이스 리팩토링

2.2.0:
버그 수정: 모니터 인식과 관련된 문제 해결
버그 수정: 키보드 단축키를 통해 다른 모니터로 이동할 때 H/W 모니터 창이 전체 화면 모드가 아닐 수 있는 버그 수정

2.2.1:
설치 관리자 지원
하드웨어 수동 새로 고침 성능 개선
.NET 8 업데이트 및 WinUI 버전 업그레이드
기능: 시작 시 자동 시작 바이너리 위치를 확인하고 손상된 경우 잘못된 경로를 수정

C# Selenium Driver 자동 설정 라이브러리

Selenium의 특성상 브라우저의 드라이버가 브라우저의 버전과 정확히 일치하여야 되는 단점이 있어 설치된 브라우저의 버전을 읽고 해당하는 드라이버를 자동으로 다운로드 및 캐싱해주는 프로젝트를 생성하였습니다.

링크

현재는 Edge와 Chrome만 지원합니다만, 차후 지원 브라우저를 늘릴 예정입니다.

원클릭으로 영상 프레임을 두배로 늘려주는 프로그램 Frame Interpolation

참고 소스 : https://github.com/nihui/dain-ncnn-vulkan

클릭 한번으로 영상의 프레임을 늘려주는 프로그램입니다. DAIN을 사용하였으며, 성능은 아래의 영상을 확인해주세요.

※ GPU를 사용하나, 프레임 보간이 매우 오래걸립니다. 이 점 참고해주세요.
※ 현재로써는 실행 파일 경로와 변환 파일 경로에 특수문자나 한글이 있으면 안됩니다 (1.2.0 업데이트로 해결됨)

프로그램 UI
DAIN 성능 비교 영상

다운로드
소스코드

변경 내역 :
* 1.0.0 : 최초 공개
* 1.1.0 : 프레임 보간 작업에 대한 프로그래스바 추가
* 1.2.0 : 프로그래스바 오류 수정 및 특정 상황에서 프로그램이 종료되는 오류 수정

탐색기에서 클립보드의 이미지 및 텍스트를 자동으로 파일로 저장해주는 프로그램 – Instant Clipboard Save

프로그램을 실행하면 탐색기에서 아무것도 선택하지 않는 경우의 우클릭 메뉴에 Instant Clipboard Save라는 메뉴가 생깁니다.
(프로그램 실행 이후 따로 뜨는 창은 없습니다)

클릭시 클립보드의 이미지(.png 파일) 또는 텍스트(.txt 파일)파일을 해당 폴더에 저장합니다.

프로그램 위치가 옮겨지는 경우 프로그램을 다시 실행해주세요.

프로그램 삭제시 탐색기 우클릭 메뉴에 남아있는 메뉴를 삭제하고싶으시다면,
레지스트리 편집기를 열어 아래 적혀진 위치의 키 및 하위 항목을 지워주세요.

Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\shell\Instant Clipboard Save

변경 로그:
1.0.0 : 최초 배포
1.1.0 : 메모리 누수 현상 해결
1.2.0 : 관리자 권한이 필요한 경우 관리자 권한 요청

컴퓨터로 타이핑하면 소리가 나는 프로그램 Typing Sound

인터넷에 비슷한 걸 찾아봐도 사운드를 못바꾸거나 바꿀수 있으면 하자가 있는게 많아서 직접 만들었습니다.

프로그램 종료를 원하시는경우 시스템 트레이의 아이콘을 우클릭하고 종료를 눌러주세요.

간혹 크롬에서 다운로드 시 다운로드가 막힙니다. 이 경우 다른 브라우저로 받아주세요

config.ini 파일 내용 설명 :

  • volume = 0~1 사이 소수로 볼륨 설정 (0.7 = 70%)
  • maxSoundChannel = 지정한 갯수 만큼 키 누름 소리를 미리 로딩 합니다. 연속된 키 입력시 소리 씹힘 현상이 일어난다면 이 수를 늘려주세요. 너무 크면 프로그램의 사용 메모리가 극단적으로 늘어납니다.
  • noSoundOnBattery = 이 설정이 0이면 배터리 사용 중에도 소리를 재생하며 이 값이 1이면 배터리 사용 중에는 배터리 사용 시간을 위해 소리를 내지 않습니다.
  • key, ctrl, alt, shift, space, tab, del, backSpace, enter = assets 폴더 내의 해당 키에 해당하는 소리를 지정합니다. wav파일로 지정해주세요.

프로그램 변경 내역 :

2.1.2 :

  • 기본 타이핑 사운드 Cherry MX Blue 스위치 소리로 변경
  • 각종 기계식 키보드 사운드를 assets폴더에 추가
  • 타이핑 소리 마지막에 지터 현상이 나는 현상 수정

2.1.1 :

  • 배터리 사용시 소리 재생 여부 설정을 추가하였습니다.

2.0.1 :

  • 백그라운드 CPU 사용량을 줄였습니다.

2.0.0 :

  • config.ini로 설정 변경 가능
  • 특정 키별 소리 지정 가능

1.8.0:

  • 절전 모드에서 깨어난 경우 사운드가 나지 않는 오류를 수정했습니다.
  • 프로그램 종료가 즉시 이루어지지 않는 오류를 수정했습니다.
  • 프로그램이 사용하는 메모리의 양을 줄였습니다.

1.6.0 :

  • 오랜시간 입력이 없는 경우 사운드가 지연되는 현상을 수정하였습니다.

1.5.0 :

  • 연속되는 키 소리 간격을 조정하였습니다.
  • 프로그램 아이콘을 추가하였습니다.
  • 트레이 아이콘을 통해 프로그램을 종료할 수 있습니다.

카카오톡 광고 제거 프로그램

참고한 소스 : https://github.com/SD810/KaTalkEspresso

카카오톡 PC버전엔 광고가 있습니다.

이 프로그램은 카카오톡의 PC버전의 광고를 제거하고 이후 백그라운드에서 지속적으로 프로그램 창 크기 조절등의 이유로 다시 생기는 광고를 제거해줍니다.

※ 이 프로그램은 우측 하단의 팝업 광고는 지워주지 않습니다.

자동 실행 방법

다운로드

패치 노트 :

1.0.1 :

  • 카카오톡 실행 종료 이후 다시 시작시에도 광고 제거하도록 수정

1.0.0 :

  • 최초 릴리즈