프로그램 배포를 할때 포터블 형식으로 배포할게 아니라면 간편한 프로그램 삭제를 위해 제어판 - 프로그램 및 기능에서 프로그램을 추가(등록)시킬 필요가 있습니다. 이로 인해 사용자는 삭제를 원할시에 간단하게 삭제가 가능합니다. 대신에 프로그램을 삭제해주는 언인스톨러(Uninstaller)로 따로 만들어야 합니다.

프로그램 등록 방법

프로그램 등록 방법은 간단합니다. 레지스트리를 이용해서 추가를 해야합니다. 제어판 - 프로그램 및 기능에 추가된 프로그램들은 모두 \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall에 저장되어 있으며 따라서 추가도 여기서 추가하면 됩니다 자세한건 MSDN에도 설명되어 있습니다.(https://msdn.microsoft.com/en-us/library/windows/desktop/aa372105(v=vs.85).aspx)

MSDN와 제가 알려드린 레지스트리 경로는 다르지만 어차피 추가되는건 똑같기때문에 아무것이나 이용하시면 됩니다.

값 

뜻 

DisplayIcon 

등록시에 아이콘을 의미합니다. 프로그램 경로를 입력하시면 됩니다. 

DisplayName 

등록시에 이름을 의미합니다. 문자열식으로 등록하시면 됩니다. 

DisplayVersion 

등록시에 버전을 의미합니다. 문자열식으로 등록하시면 됩니다. 

Publisher

개발사를 뜻합니다. 프로그램을 만든 개발사를 쓰시면 됩니다. 문자열식으로 등록하시면 됩니다. 

UninstallString

가장 중요합니다.언인스톨시도할때 실행될 프로그램을 의미합니다. 언인스톨러 프로그램 경로를 입력하시면 됩니다. 

URLInfoAbout

개발사의 사이트를 입력하시면 됩니다. 문자열식으로 등록하시면 됩니다. 

이렇게 6가지의 값이 필요합니다. 먼저 키를 생성하고 값을 입력하시면 됩니다. 그러면 제어판 - 프로그램 및 기능에 프로그램이 등록됩니다. 굳이 6개의 값말고도 추가 가능합니다. 자세한건 값들은 위에 MSDN를 참고해주시면 됩니다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32;
namespace Example
{
    class Program
    {
        
        static void Main(string[] args)
        {
            string KeyName = "예제";
            RegistryKey reg = Registry.LocalMachine.CreateSubKey("SOFTWARE").CreateSubKey("Microsoft").CreateSubKey("Windows").CreateSubKey("CurrentVersion").CreateSubKey("Uninstall").CreateSubKey(KeyName);
            reg.SetValue("DisplayIcon", Environment.CurrentDirectory+ @"\Example.exe");
            reg.SetValue("DisplayName""Example");
            reg.SetValue("DisplayVersion","1.0");
            reg.SetValue("Publisher""Plorence, Inc.");
            reg.SetValue("UninstallString", Environment.CurrentDirectory + @"\Uninstaller.exe");
            reg.SetValue("URLInfoAbout""http://plorence.kr/");
        }
    }
}
 
cs

주의할점은 관리자권한필요로 합니다. 관리자 권한으로 실행안하면 예외처리되며 정상적으로 등록이 불가능합니다.

레지스트리의 경로는 등록 과정에서 판단하나 본데,제가 등록시킨것과 MSDN에서 나온 경로와 일치하지 않는것으로 보아 프로그램에 따라서 갈리나 봅니다.

실제로 제어판 - 프로그램 및 기능에 추가

레지스트리에 등록된 모습

이렇게 정상적으로 등록된걸 확인할 수 있습니다.

Example.zip

예제 프로젝트 입니다.


댓글을 달아 주세요