´ç±ÙÀº ¼³Ä¡ÇÒ ÇÊ¿ä¾øÀÌ º¹»çÇؼ ¹Ù·Î ¾µ ¼ö ÀÖ´Â ´Üµ¶ ½ÇÇàÆÄÀÏÀÌ´Ù. ±×·¯´Ù º¸´Ï ¼³Ä¡ ÇØÁ¦ ÇÁ·Î±×·¥µµ µû·Î Á¦°øÇÏÁö ¾ÊÀ¸¸ç ´ë½Å ½º½º·Î ¼³Ä¡ ÇØÁ¦¸¦ ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ·¹Áö½ºÆ®¸®¿¡ Á¤º¸°¡ ³²¾Æ À־ º° ¹®Á¦°¡ µÇÁö´Â ¾ÊÀ¸¹Ç·Î ±»ÀÌ ¼³Ä¡ÇØÁ¦¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Â °Í °°Àºµ¥ ´Ü ÇÑ °¡Áö bExplorerPopup ¿É¼Ç ¶§¹®¿¡ ¼³Ä¡ ÇØÁ¦ ±â´ÉÀÌ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. Ž»ö±â¿¡ Æ˾÷¸¸ µî·ÏÇسõ°í ½ÇÇàÆÄÀÏÀÌ ¾øÀ¸¸é °ï¶õÇϱ⠶§¹®ÀÌ´Ù.
´ç±Ù »ç¿ëÀÚµéÀÌ ¾²´Ù°¡ ¸¶À½¿¡ ¾Èµé ¶§ ±âº» ¼³Á¤¿¡¼ ÀÌ ¿É¼ÇÀ» ¸ÕÀú ²ô°í Dangeun.exe¸¦ »èÁ¦ÇÏ¸é ¾Æ¹« ¹®Á¦°¡ ¾øÁö¸¸ ±×·¸Áö ¾Ê±â ¶§¹®¿¡ ¼³Ä¡ ÇØÁ¦ ¸í·ÉÀ» µû·Î Á¦°øÇØ¾ß ÇÑ´Ù. Â÷ÈÄ¿¡ È®ÀåÀÚ ¿¬°á ±â´ÉÀ̳ª ´Ù¸¥ ÇÁ·Î±×·¥ÀÇ Ç÷¯±×ÀÎÀ¸·Î µî·ÏÇÏ´Â µî ½Ã½ºÅÛ¼³Á¤À» º¯°æÇØ¾ß ÇÏ´Â ±â´ÉÀ» À§Çؼµµ ¼³Ä¡ ÇØÁ¦ ¸í·ÉÀº ¹Ì¸® ¸¸µé¾î ³õ´Â °ÍÀÌ ÁÁÀ» °Í °°´Ù. OnCommand¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÏ¿© ¼³Ä¡ ÇØÁ¦ ¸í·ÉÀ» ó¸®ÇÑ´Ù.
void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
case IDM_TOOL_UNINSTALL:
if (g_ChildNum) {
MessageBox(g_hFrameWnd, "ÆíÁýâÀÌ ¿·Á ÀÖ´Â »óÅ¿¡¼´Â ¼³Ä¡ ÇØÁ¦¸¦"
" ÇÒ ¼ö ¾ø½À´Ï´Ù. ¸ðµç ÆíÁýâÀ» ´ÝÀº ÈÄ ´Ù½Ã ½ÇÇàÇØ ÁֽʽÿÀ",
"¾Ë¸²",MB_OK);
return;
}
if (DialogBox(g_hInst, MAKEINTRESOURCE(IDD_UNINSTALL), g_hFrameWnd,
UninstallDlgProc)==IDOK) {
bUninstall=TRUE;
DestroyWindow(g_hFrameWnd);
}
break;
¹®¼¸¦ ÆíÁýÇÏ°í ÀÖ´Â Áß¿¡´Â ¼³Ä¡ ÇØÁ¦¸¦ ÇÒ ¼ö ¾øµµ·Ï ÇÏ¿´À¸¸ç ¹Ýµå½Ã ¸ðµç ¹®¼¸¦ ´Ý¾Æ¾ß¸¸ ÀÌ ¸í·ÉÀ» ¾µ ¼ö ÀÖ´Ù. ¹Ìº¸°ü ¹®¼ ¹®Á¦µµ ÀÖ°Å´Ï¿Í ÀÌ·± Ưº°ÇÑ ±â´ÉÀº Á» ºÒÆíÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ±×·¡¼ ±ÍÂú°Ô ´ëÈ»óÀÚ¸¦ ÅëÇØ ÇÑ ¹ø ´õ È®ÀÎÇÑ ÈÄ ¼³Ä¡ ÇØÁ¦¸¦ ÇÑ´Ù. ¼³Ä¡ ÇØÁ¦¸¦ À§ÇÑ ¾È³» ¸Þ½ÃÁö¿Í ÇØÁ¦ ¿É¼Ç ÀÔ·ÂÀ» À§ÇØ ´ÙÀ½ ´ëÈ»óÀÚ¸¦ ¶ç¿î´Ù.
Ȥ½Ã ½Ç¼ö·Î ÀÌ ¸í·ÉÀ» ¼±ÅÃÇßÀ» ¼öµµ ÀÖÀ¸¹Ç·Î ¼³Ä¡¸¦ ÇØÁ¦ÇÑ´Ù´Â ¸Þ½ÃÁö¸¦ È®½ÇÇÏ°Ô º¸¿©ÁÖ¾ú´Ù. ÇöÀç´Â ¸Þ½ÃÁö¹Û¿¡ ¾øÁö¸¸ Â÷ÈÄ ¹öÀü¿¡¼´Â ¼³Ä¡ ÇØÁ¦ ¿É¼ÇÀÌ »ý±æ ¼öµµ ÀÖÀ¸¹Ç·Î ´ëÈ»óÀÚ¸¦ ¸¸µé¾î µÎ¾ú´Ù. ¿¹¸¦ µé¾î ´ç±ÙÀ¸·Î ¸¸µç ¸ÅÅ©·Î ÆÄÀÏÀ̳ª »ó¿ë±¸ ÆÄÀÏ °°Àº °Íµéµµ °°ÀÌ »èÁ¦ÇÒ °ÍÀÎÁö¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌ ´ëÈ»óÀÚÀÇ ÇÁ·Î½ÃÀú´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.
BOOL CALLBACK UninstallDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg,IDOK);
return TRUE;
case IDCANCEL:
EndDialog(hDlg,IDCANCEL);
return TRUE;
}
return FALSE;
}
return FALSE;
}
ÀÌ ´ëÈ»óÀÚ¿¡¼ È®ÀÎ ¹öÆ°À» Ŭ¸¯Çؾ߸¸ ¼³Ä¡ ÇØÁ¦µÈ´Ù. ÀÌ ´ëÈ»óÀÚ¿¡¼ IDOK¸¦ ¸®ÅÏÇϸé OnCommand¿¡¼´Â ¼³Ä¡ ÇØÁ¦ µ¿ÀÛÀ» Çϴµ¥ ¼³Ä¡ ÇØÁ¦´Â ½ÇÇàÁß¿¡ ÇÒ ¼ö ¾øÀ¸¸ç Á¾·á Á÷Àü¿¡ ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é OnDestroy¿¡¼ ¶Ç ·¹Áö½ºÆ®¸®¿¡ Á¤º¸¸¦ ±â·ÏÇϱ⠶§¹®ÀÌ´Ù. ±×·¡¼ OnCommand¿¡¼ ¼³Ä¡ ÇØÁ¦¸¦ Á÷Á¢ ÇÏÁö´Â ¾ÊÀ¸¸ç bUninstallÀ̶ó´Â Àü¿ªº¯¼ö¿¡ ¼³Ä¡ ÇØÁ¦Ç϶ó´Â ½ÅÈ£¸¸ ³²±â°í ¸ÞÀÎ À©µµ¿ì¸¦ Æı«ÇÏ¸é µÈ´Ù. ÀÌ Àü¿ªº¯¼ö´Â ¼±¾ðÇÒ ¶§ FALSE·Î ÃʱâÈÇÏ¿´´Ù.
BOOL bUninstall=FALSE;
¼³Ä¡ ÇØÁ¦¸¦ ¼±ÅÃÇÒ ¶§¸¸ TRUE°¡ µÇ¸ç ±× ¿ÜÀÇ °æ¿ì´Â Ç×»ó FALSE°ªÀ» À¯ÁöÇÑ´Ù. ÀÌ º¯¼ö°ªÀ» Á¡°ËÇÏ´Â ½ÃÁ¡Àº WinMain¿¡¼ ¸Þ½ÃÁö ·çÇÁ°¡ ¿ÏÀüÈ÷ Á¾·áµÇ¾úÀ» ¶§ÀÌ´Ù.
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
....
CoUninitialize();
if (bUninstall) {
Uninstall();
}
return (int)Message.wParam;
}
ÇÁ·Î±×·¥ Á¾·á Á÷Àü¿¡ ÀÌ º¯¼ö°ªÀ» º¸°í Uninstall ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ±×·¡¾ß ¿ÏÀüÇÑ ¼³Ä¡ ÇØÁ¦¸¦ ÇÒ ¼ö ÀÖ´Ù. ½ÇÁ¦·Î ¼³Ä¡ÇØÁ¦¸¦ ÇÏ´Â Uninstall ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.
void Uninstall()
{
TCHAR szKey[MAX_PATH];
TCHAR szPath[MAX_PATH];
TCHAR szLink[MAX_PATH];
RegisterPopup(FALSE);
lstrcpy(szKey,KEY);
szKey[lstrlen(szKey)]=0;
SHDeleteKey(SHCU,KEY);
MyGetSpecialFolderPath(g_hFrameWnd, CSIDL_DESKTOP, szLink);
lstrcat(szLink, "\\´ç±Ù.lnk");
if (_access(szLink,0)==0) {
DeleteFile(szLink);
}
MyGetSpecialFolderPath(g_hFrameWnd, CSIDL_PROGRAMS, szPath);
lstrcat(szPath, "\\´ç±Ù");
wsprintf(szLink,"%s\\´ç±Ù.lnk",szPath);
if (_access(szLink,0)==0) {
DeleteFile(szLink);
RemoveDirectory(szPath);
}
}
½Ã½ºÅÛ¿¡ º°´Ù¸¥ º¯È¸¦ ¸¹ÀÌ ¸¸µéÁö ¾Ê¾ÒÀ¸¹Ç·Î ·¹Áö½ºÆ®¸®¸¸ Á¤¸®ÇÏ°í ´ÜÃà ¾ÆÀÌÄܸ¸ »èÁ¦ÇÏ¸é µÈ´Ù. Ž»ö±âÀÇ Æ˾÷¸Þ´º µî·ÏÀº Ãë¼ÒµÇ¸ç ´ç±ÙÀÇ ·¹Áö½ºÆ®¸® ·çƮŰ´Â Åë°·Î »èÁ¦µÇ¾î ¸ðµç ¼³Á¤Á¤º¸¸¦ ÀÒ°Ô µÉ °ÍÀÌ´Ù. ÀÌ ¸í·É ÈÄ Dangeun.exe¸¸ »èÁ¦ÇÏ¸é ¸ðµç Á¤¸®°¡ ³¡³´Ù.
¼³Ä¡ ÇØÁ¦ ¸í·ÉÀ» ÇÁ·Î±×·¥ ÀÚ½ÅÀÌ Á¦°øÇϴµ¥ ´ëÇؼ º£Å¸ Å×½ºÅ͵鿡°Ô ¸¹Àº °ÇÀǸ¦ ¹ÞÀº¹Ù ÀÖÀ¸¸ç ³ª ½º½º·Îµµ ÀÌ ¸í·ÉÀÌ ¹«Ã´ ¾î»öÇÏ´Ù´Â °ÍÀ» ÀÎÁ¤ÇÑ´Ù. ´ç±ÙÀÌ ¼³Ä¡ ÇØÁ¦¸¦ Á÷Á¢ Áö¿øÇØ¾ß ÇÏ´Â ´çÀ§¼º Áß Çϳª´Â ¿øÈ°ÇÑ Å×½ºÆ®¸¦ À§ÇؼÀÌ´Ù. ¿É¼ÇµéÀÌ Á¦´ë·Î Àû¿ëµÇ´ÂÁö, ÃʱâÈ°¡ Á¦´ë·Î µÇ´ÂÁö¸¦ Å×½ºÆ®Çغ¸·Á¸é ·¹Áö½ºÆ®¸®¸¦ ±ò²ûÇÏ°Ô Áö¿î ÈÄ ´Ù½Ã ½ÇÇàÇØ¾ß Çϴµ¥ ¸Å¹ø ·¹Áö½ºÆ®¸® ÆíÁý±â¸¦ ¿±â´Â ³Ê¹« ±ÍÂú±â ¶§¹®ÀÌ´Ù. ±×·¡¼ ¿¹Á¦¿¡ ¾Æ¿¹ ÀÚ½ÅÀÇ ·¹Áö½ºÆ®¸® Å°¸¦ ÃʱâÈÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» ³ÖÀº °ÍÀÌ´Ù.
¹°·Ð ÀÌ·± ¸ñÀûÀ̶ó¸é ºÐ¸®µÈ DgUninstall.exe¸¦ Á¦°øÇÒ ¼öµµ ÀÖÀ¸¸ç ´ÙÀ½ ¹öÀü¿¡¼´Â ±×·¸°Ô ÇÒ Áöµµ ¸ð¸¥´Ù. ´ç±ÙÀÌ ¼³Ä¡ ´ëÈ»óÀÚ¿Í ¼³Ä¡ ÇØÁ¦ ¸í·ÉÀ» Á¦°øÇØ¾ß ÇÏ´Â °¡Àå ±Ùº»ÀûÀÎ ÀÌÀ¯´Â ´Üµ¶ ½ÇÇàÆÄÀÏÀ̱⠶§¹®ÀÌ´Ù. ¼³Ä¡ °úÁ¤ÀÌ ÇÊ¿ä¾øµµ·Ï ¸¸µé±â À§ÇØ ÀÌ·± ¾î»öÇÑ Äڵ带 ÀÛ¼ºÇÏ°Ô µÇ¾ú´Âµ¥ Àû¾îµµ 1.0¹öÀü¿¡¼´Â ÀÌ ¼³°è ¿øÄ¢À» ¹Ýµå½Ã Áöų °ÍÀÌ´Ù. ³ª´Â ¼³Ä¡Çؾ߸¸ ¾µ ¼ö ÀÖ´Â À¯Æ¿¸®Æ¼°¡ ½È´Ù.