• ·Î±×ÀÎ ÇÔ ÇØº¸²ô³ª?

  • Sarangnamu.net June 17, 2003
    Home Login Study Open Project Gallery Free board Google Code
    installshield guide?


    Last Modify : July 24, 2007 11:00
    ¼ö ¸¹Àº °í¼ö ºÐµéÀº ÀÌ¹Ì ¾Ë°í °è½ÇÅ×Áö¸¸, À̰÷À» ¾Æ¹«¸®~~~µÚÁ®ºÁµµ ÀÚ·á°¡ ¾ø¾î¼­ (Á¦ °æ¿ì¿¡ ¸»ÀÌÁÒ) ÀÌ·¸°Ô
    Àú¿Í °°Àº ÃÊÂ¥ºÐµé °í»ýÇϽDZîºÁ Á¤º¸ °øÀ¯ÇÕ´Ï´ç.
    ÁÖÁ¦´Â ½Ã¸®¾ó ³Ñ¹ö üũÇϱⱸ¿ä. VC++6.0°ú ÀνºÅç ½¯µå 9.0ȯ°æ¿¡¼­ ½ÇÇàÇÕ´Ï´Ù.




    Á¦ °æ¿ì ¼ø¼­´Â ´ÙÀ½°ú °°ÀÌ Çß½À´Ï´Ù.

    [1´Ü°è - ÀνºÅ罯µå¿¡ ½Ã¸®¾ó ³Ñ¹ö üũÇÒ ºÎºÐÀ» À§ÇÑ È¯°æ ¸¸µé±â]
        0. ¼³Ä¡ÇÒ ÇÁ·Î±×·¥À» ¸¸µé°í¼­ À̰ÍÀ» ¸±¸®Áî ¹öÁ¯À¸·Î ÄÄÆÄÀÏ Çß½À´Ï´Ù.(Ctrl+F5Ű)
        1. ÀνºÅç ½¯µå¸¦ ÄÕ´Ï´Ù.
        2. InstallScript MSI Project·Î ÇÁ·ÎÁ§Æ®¸¦ Çϳª »ý¼ºÇÕ´Ï´Ù.
        3. ÇÁ·Î±×·¥ À̸§À» Á¤ÇÏ°í ±âŸµîµî ´Ù ¼³Á¤ÇÏ°í¼­ ¼³Ä¡ÇÒ ½ÇÇàÆÄÀÏ ¹× ÄÄÆ÷³ÍÆ®¸¦ µî·ÏÇØ¾ß °ÚÁÒ?
        ÀÌ°Å¾ß ¸Ó½Ã±â À§ÀÚµå ÀÌ¿ëÇϸé ÀÏ»çõ¸®·Î ÁøÇàµÇÁö¿ä. (¿©±â±îÁö´Â ´©±¸³ª ¾Æ´Â°Å´Ï±ñ¿ä. ´ëÃæ ³Ñ¾î°¡±¸¿ä.)


    [2´Ü°è - ½Ã¸®¾ó ³Ñ¹ö¸¦ üũÇÒ DLLÆÄÀÏ ¸¸µé±â]
        Àú´Â Á¦ÀÏ ¹«³­ÇÏ°Ô VC++ 6.0 MFC ·Î ¸¸µé¾ú½À´Ï´Ù. ¿©±â¼­ ÁÖÀÇÇÒ °ÍÀº Á¤ÀûDLL·Î ¸¸µé¾î¾ß ÇÑ´Ù´Â °Ì´Ï´Ù.
        ¾È±×·Á¸é VC++°¡ ¾ø´Â °÷¿¡¼­´Â ¾Æ¸¶ 0x80040702 Dll Load Failure ¸Þ¼¼Áö°¡ ¶ß¸é¼­ ¼³Ä¡ Áß°£¿¡ ¸ØÃç¹ö¸±²¨¿¡¿ê.
        Á¦°¡ À̰Ͷ«¿¡ °ÅÀÇ ¿©´ü½Ã°£À» °í»ýÇßÁö¿ä. ÀÌ°É ¸ô¶ó¼­¸®.¤»
        µ¿ÀûDLL·Î ¸¸µé°í´Â ÀÌ·± »ý°¢À» ÇÏ½Ç ¼ö Àִµ¥¿ä. "VC++ÀÇ depends(Dependency WalkerÁÒ)·Î ½Ã¸®¾ó
        Ã¼Å©ÇÏ´Â dll¿¡ ¿¬°üµÇ´Â ¸ðµç Dll ±Ü¾î ¸ðÀº ´ÙÀ½¿¡ ÀνºÅ罯µåÀÇ ¿ÞÂÊâ¿¡ Behavior and Logic¿¡¼­
        Support Files / BillBoardÀÇ Language Independent(ÀÌ°Ç ¿À¸¥ÂÊâ)¿¡ ´Ù°¡ ÆÄÀÏ ´Ù ¶¯°Ü¿À¸é µÇÁö ¾Ê´©?
        ±×¸®°í ¿ÞÂÊâÀÇ Additional Tools¿¡¼­ Dependency scanner·Î Á¤Àû/µ¿Àû ÀÇÁ¸ÆÄÀÏ ºÒ·¯¸ðÀ¸¸é µÇÁö ¾Ê´©?"
        ¶ó±¸¿ä...Á¦°¡ ½Ç·ÂÀÌ ¾ÈµÇ¼­¸® ´Ù ÇØºÃ´Âµ¥ ¼Ò¿ë ¾ø´õ±º¿©. ¸Ó..."³­ ÇÒ ¼ö ÀÖ´Ù³×~~"¶ó°í ÇϽøé¾ß ÇÒ ¸»ÀÌ ¾øÁö¸¸¿ä.¤»
        ¾î·µç ÀÌ·¸°Ô dll ÆÄÀÏÀ» ¸¸µì´Ï´Ù. ¸¸µå´Â °úÁ¤Àº ÀÌ·¸½À´Ï´Ù.(Áö±ÝºÎÅÏ VC++¿¡¿ë.)


        0. »õ ÇÁ·ÎÁ§Æ®¸¦ Çϳª ¸¸µì´Ï´Ù.¹°·Ð MFC AppWizard(dll)·Î Çϼž߰ÚÁÒ.
        1. À̶§ AppWizardÀÇ Step 1 of 1¿¡¼­ Á¦ÀÏ À­ºÎºÐÀÇ Regular Dll with MFC statically linked¸¦ ¼±ÅÃÇÕ´Ï´Ù. µý°Ç ³ÀµÖ¿ë.
            ±×·³ ÇÁ·ÎÁ§Æ®°¡ Çϳª »ý¼º µÇ°ÚÁÒ? ÀÌ°É Ctrl+F5·Î ¸±¸®Áî ÄÄÆÄÀϸµÀ» Çϸé ÀÎÁ¦ ¾Æ¹«¶§³ª ¾µ ¼ö ÀÖ´Â dllÀÌ µÇÁö¿ä.
            ÀÌÁ¦ DllÀÇ ³»¿ëÀ» º¼±î¿ä? ÇÁ·ÎÁ§Æ® À̸§À» [SerialManSe]¶ó°í ÇÏÁÒ. ½Ã¸®¾ó¸¸¼¼ÀÔ´Ï´Ù.¤¾¤¾

        2. Çì´õÆÄÀÏÀ» º¸ÁÒ. variables declarationÀ» ÇØ¾ß°ÚÁÒ? ¿¹. º¯¼ö ¼±¾ð¿ä. protected¿Í public privateÀ» ÀûÀýÈ÷ ½á¼­
            ½Ã¸®¾ó °è»ê¿¡ ÇÊ¿äÇÑ °¢Á¾ º¯¼ö¸¦ ¸¸µì´Ï´Ù. ÀÌ°Ç ÀÚÀ¯¿¡¿ë. ´Ù¸¸ Á¦´ë·Î µ¹¾Æ°¡°Ô ¸¸µå½Ã±æ.¤»

        3. ´ÙÀ½ Çì´õ¿¡¼­ Ŭ·¡½º ¼±¾ðºÎ°¡ ³¡³ª°í ¹Ù·Î ¹ØºÎºÐ¿¡´Ù°¡ ÀÌ·¸°Ô ¶±ÇÏ´Ï ½áÁÝ´Ï´Ù.

        extern "C" __declspec(dllexport) int CheckSerial(char* charSerialNumber); // ÀÌ dllÆÄÀϸ¸ ÀÖ´Ù¸é üũÇÒ ¼ö ÀÖ´Ù. ¾Æ½Î~~~ÇÊ¿äÇÏ¸é °®´Ù ¾²3.


        ¹°·Ð ¸Ó...CheckSerial¸¸ÀÌ ¾Æ´Ï¶ó SerialCheckµµ µÇ±¸¿ä. ¸Ó...¿øÇÑ´Ù¸é SerialManSe(½Ã¸®¾ó¸¸¼¼)µµ µÇ±¸...ÀÚÀ´´Ï´Ù.¤»
        Áß¿äÇÑ°Ç cdecl°ú stdcallÀÌ ¾ø´Ù´Â °ÅÁÒ. °£È¤ ¾²½Ã´Â ºÐÀÌ °è½Åµ¥, ¸Ó À̰ɾ²¸é ¾îÂîµÉÁö´Â ¾È½áºÁ¼­ Àß ¸ð¸£°Ú½À´Ï´Ù.¤¾¤¾
        ¿©±â¼­ ÇѰ¡Áö ´õ~!! Alt+F7´­·¯¼­¿ä(Project SettingÀÌÁÒ), c/c++¿¡¼­¿ä. category¸¦ generalÀÌ ¾Æ´Ï¶ó code generationÀ¸·Î
        º¸¼¼¿ä. ±×·³ calling convention¶õÀ» º¸¸é cdeclÀ̶ó°í µÇÀÖ½À´Ï´Ù. ¾î¶²ºÐÀÌ ÀÌ°É È®ÀÎÇ϶ó´Âµ¥, ¹º¸»ÀÎÁö´Â Àß ¸ð¸£°Ú½À´Ï´Ù.
        ¾î·µç óÀ½¿¡ ÇÁ·ÎÁ§Æ® »ý¼ºÇÏ°í ¾È°Çµå·È´Âµ¥, Àü cdeclÀ̶ó°í µÇÀ־ ±×³É ³Ñ¾î°¬Áö¿ä.

        4. ÀÎÁ¦ ´ë¸ÁÀÇ ±¸ÇöºÎºÐÀÔ´Ï´Ù.¤» À̰Š...¸Ó ÀÚÀ¯ÁÒ. ´ÙÀ½°ú °°ÀÌ ÇÔ¼ö¸íÀ» ½áÁÖ°í ±× ´ÙÀ½ºÎÅÏ ÀÚÀ´´Ï´Ù.(ÀÚÀ¯...Âü ÁÁÁÒ.)
            ¾ÆÁÖ¾ÆÁÖ¾ÆÁÖ¾ÆÁÖ¾ÆÁÖ °£´ÜÇÏ°Ô ÇÔ¼ö¸¦ ±¸ÇöÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù. ÇÊ¿äÇÏ¸é °®´Ù ¾²¼¼¿ä.

        CSerialManSeApp theApp;    //½Ã¸®¾ó¸¸¼¼ ÇÁ·ÎÁ§Æ® AppÀνºÅϽºÁÒ. ¾Æ·¡ ÇÔ¼ö°¡ Ŭ·¡½º ¸Þ¼Òµå°¡ ¾Æ´Ñ°ü°è·Î ²À ¼±¾ðÇØÁà¾ß ÇÕ´Ï´Ù.

        //char* charSerialNumber ¿©±â ÀÌ ÆÄ¶ó¹ÌÅÍ·Î ½Ã¸®¾óÀÌ ³¯¶ó¿ÀÁÒ. °£È¤ ÄÄÅͰ¡ ´À¸®¸é ±â¾î¿Ã ¼öµµ ÀÖÀ¸´Ï Á¶½ÉÇϼ¼¿ê.^^
        extern "C" __declspec(dllexport) int SerialManSe_CheckCheckCheck(char* charSerialNumber)
        {
            AFX_MANAGE_STATE(AfxGetStaticModuleState());
            
            // ½Ã¸®¾ó ¹øÈ£¸¦ ÀúÀåÇÒ ºÎºÐ
            CString serialString;

            // ½Ã¸®¾óÀ» char¿¡¼­ ½ºÆ®¸µÀ¸·Î º¯È¯ÇÕ´Ï´Ù.
            serialString.Format("%s", charSerialNumber);    

            // ÀÌ°Ô ¸Ó¾ß?ÇÏ°í ¹°À½Ç¥°¡ ¸Ó¸´¼Ó¿¡ ±×·ÁÁö´Â ºÐµéÀº ¾Æ·¡ ÁÖ¼®À» º¸¼¼¿ä.
            theApp.SetSerial(atol((LPSTR)(LPCTSTR)serialString));    


            // theApp. -> Ŭ·¡½º ÀνºÅϽºÁÒ.À̰оøÀ¸¸é ¾ÈµÇ¿ä. ¸Ó °£È¤ '³ª ÇÊ¿ä ¾ö¶°~'ÇÏ´Â ºÐµéÀÌ °è½ÃÁÒ.¤»
            // SetSerial(); -> ÀÌ°Ç ¿©±â °ø°³ ¾ÈÇߴµ¥, Ŭ·¡½ºÀÇ protectedº¯ ¼öÀÎ CString serial¿¡ ÀúÀåÇÏ´Â AccessorÇÔ¼öÀÔ´Ï´Ù.
            // ´ÙÀ½ SetSerial¿¡ ÆÄ¶ó¹ÌÅÍ·Î Àü´ÞµÇ´Â atol() -> ±ÛÀÚ·Î ÀÔ·ÂµÈ °ÍÀ» ¼ýÀÚ·Î ¹Ù²ãÁÖ´Â ÇÔ¼ü´Ï´Ù.
            // (LPSTR)(LPCTSTR)serialString -> ¤¾¤¾¸ô¶óµµ µÇÁÒ.¤» ¾Ë°í½ÍÀ¸½Ã¸é empas ¸ð¿©¶ó °Ë»ö¿¡¼­ °Ë»öÇØº¸¼¼¿ä.¤¾¤¾

            // IsThatRight ->½Ã¸®¾óÀÌ ¸Â´Ï? ÇÏ°í ¹°¾îº¸´Â ÇÔ¼öÁÒ. ÀÌ dllÀÇ ½ÇÁúÀûÀÎ ÇÙ½ÉÀÔ´Ï´Ù.
            // ¸ÂÀ¸¸é 0, Ʋ¸®¸é 1À» ¹ÝȯÇÕ´Ï´Ù.
            if(theApp.IsThatRight(theApp.GetSerial()))
            {
                // ¸ÂÀ¸¸é 0À» ¹ÝȯÇÏÁÒ. ÀÌ ¸®ÅÏÀº ´©°¡ ¹Þ´À³Ä? ´©±¸±ä ´©±¸°Ú¾î¿ä. ÀνºÅç ½¯µå¿¡¼­ ¹ÞÁö¿ä.
                return true;
            }
            else
            {
                // ±×·³ ¿©±â¼­ ¹®Á¦. ÀÌ ¸®ÅÏÀº ´©°¡ ¹ÞÀ»±î¿ä?
                // ¿¹.. ¸Â½À´Ï´Ù. õÀç½Ã±º¿ä.¤»
                return false;
            }
        }

        ÀÌ·¸°Ô ÇÔ¼ö¸¦ ±¸ÇöÇØÁÝ´Ï´Ù. ¹°·Ð ¿©±â ÀÌ ÇÔ¼ö ³»¿¡¼­ ÇÊ¿äÇÑ ÀÛ¾÷À» ´Ù ¸¶Ãĵµ ÁÁ°ÚÁö¿ä. ÇÏÁö¸¸ ³ª C++Á» ¹è¿ü¼Ò~Çϰí
        »ËÁ» ³»¾ßÁÒ.¤¾¤¾. IsThatRightÇÔ¼ö·Î ½Ã¸®¾óÀ» üũÇÏ´Â ºÎºÐÀº ¿©·¯ºÐÀÌ ¾Ë¾Æ¼­ ¸¸µå½Ã±æ ¹Ù¶ø´Ï´Ù.
        ¸Ó...123456789ÀÌ·¸°Ô ¾ÆÈ©ÀÚ¸® ÀÔ·ÂÇØ¼­ °¢ ÀÚ¸® ´Ù ´õÇϸé 45°¡ ³ª¿À°Ô ÇÏ´Â °É ÇÒ ¼öµµ ÀÖ°ÚÁÒ?
        ¾Æ´Ô 999990000À¸·Î ÇØµµ 45°¡ ³ª¿À´Ï..±Ùµ¥ ÀÌ°Ç ±Ý¹æ ¾Ë°ÚÁÒ?¤»¤»

        4. ÀÚ~~µåµð¾î dllÇÔ¼ö¸¦ ´Ù ¸¸µé¾ú½À´Ï´Ù. ±×·³ ÄÄÆÄÀÏ ÇØ¾ßÁÒ. Ctrl+F5·Î ¸±¸®Áî ÄÄÆÄÀϸµÇÕ´Ï´Ù.
            È¤, dllÀÌ Å©±â°¡ ±²ÀåÈ÷ ÀÛÀº kb´ëÀÇ ¿ë·®À» º¸ÀÌ¸é ¾Æ±î ÇÁ·ÎÁ§Æ® »ý¼ºÇÒ ¶§, µ¿Àûdll·Î ½Ç¼ö·Î ¸¸µç°Ô ¾Æ´Ñ°¡ ÀǽÉÇØº¸¼Å¾ß ÇÕ´Ï´Ù.
            ¾ÆÁÖ °£´ÜÇÏ°Ô ±¸ÇöÇØµµ 1.25MB°¡ ³ª¿É´Ï´Ù. ¤» µðÄÄÆÄÀÏÇØ¼­ ½Ã¸®¾ó»ý¼º¿ø¸® µéų¸¸ÇÑ ¸¸¸¸ÇÑ ¿ë·®Àº ¾Æ´ÏÁÒ?

        5. ±×·³ ÀÌ°É ¾µ±î¿ä? ¾Æ´ÏÁÒ..½Ã¸®¾ó ÅØ½ºÆ® ÆÄÀÏÀ» ¸¸µé¾î¾ßÁÒ. ÀڱⰡ ¸¸µç ÇÁ·Î±×·¥ ÀڱⰡ ½Ã¸®¾ó ¸ð¸¥´Ù¸é À̰м¼»ó¿¡ ´©°¡ ¾¹´Ï±î?
            ±×·±Àǹ̿¡¼­ VC++¸¦ ¶Ç ÄÕ´Ï´Ù. ÇÁ·ÎÁ§Æ® Çϳª »ý¼ºÇϽñ¸¿ä. À̹ø¿£ txtÆÄÀÏ·Î Ãâ·ÂÇÏ´Â °úÁ¤À» ±¸ÇöÇÕ´Ï´Ù.
            ¿¹¸¦ µé¾î 10ÀÚ¸®¼ö¶óÇϸé 0000000000ºÎÅÍ 9999999999±îÁö´Ï±î ÃÑ 99¾ï°³(¸Â³ª?)ÀÇ ½Ã¸®¾ó ¹üÀ§°¡ »ý¼ºµÇ°ÚÁÒ?
            À̰ÍÀ» for(i=0 ; i<999999999 ; i++)·Î µ¹·Á¼­ dll·ÎºÎÅÍ ¸®ÅÏÀÌ trueÀÎ °æ¿ì¸¸ µû·Î ±â·ÏÇØ¼­ txtÀÇ ³¡ºÎºÐ¿¡ \nÇϰí ÀúÀåÇϽøé
            ³ªÁß¿¡ º¸±âÁÁ°Ô ¿Ã¹Ù¸¥ ½Ã¸®¾ó¸¸ Âß~~³ª¿À°Ô µÇÁö¿ä.(¾ÆÀ̱¸ ÀÌ»µ¶ó~) ¹°·Ð ½Ã°£Á» °É¸³´Ï´Ù.
            Àú´Â ¾ÆÁÖ ±×³É °£´ÜÇÏ°Ô ¼ýÀڷθ¸ Çߴµ¥¿ä. ÇÊ¿äÇÏ½Ã´Ù¸é ¹®ÀÚ ¹× Ư¼ö¹®ÀÚ, À¯´ÏÄÚµå¿Í 8, 16Áø¼ö, ºñÆ®¿¬»êÀÚ¸¦ µ¿¿øÇؼ­
            ½Ã¸®¾óÀ» °ËÁõÇÏ´Â ¹æ¹ýµµ ÀÖ½À´Ï´Ù. ¸Ó...ÇÏÀÚ¸é ÇÒ¼ö ÀÖ°ÚÁö¸¸, ´©°¡ ÀÎÅͳݿ¡ À̰ÍÀÌ ÀÌ Çñ׷¥ÀÇ ¾¾¸®¾óÀÌ¿À~ÇÏ°í ³»³õÀ¸¸é
            °í»ýÇØ¼­ ¸¸µç°Ô ¹°°ÅǰÀÌ µÇ´Ï±î¿ä. ³Ê¹« ¸¹Àº ³ë·ÂÀ» ±â¿ïÀÌ½Ã´Â°Ç ¹èº¸´Ù ¹è²ÅÀÌ ´õÅ« »óȲÀÌ µÇ°ÚÁÒ. ¸Ó......ÀÚÀ´´Ï´Ù.¤»
            ±×·³ À̰ɷΠdllÀ» ¸¸µé°í dll·ÎºÎÅÍ txtÆÄÀÏ·Î ½Ã¸®¾óµµ ÃßÃâÇß½À´Ï´Ù.´ÙÀ½Àº ÀÌ dllÀ» ÀνºÅ罯µå¿¡ ¾¥¼Å ³Ö¾î¾ß °ÚÁÒ?



    [3´Ü°è - ½Ã¸®¾ó ³Ñ¹ö üũÇÒ °úÁ¤ ¸¸µé±â]
        ÀÚ~ ȯ°æÀº °®ÃçÁáÀ¸´Ï ÀÎÁ¦ºÎÅÏ ÂüÀ¸·Î Àç¹ÌÀÖ°í, Â¥Áõ³ª´Â ½ºÅ©¸³µå³îÀ̸¦ ½ÃÀÛÇØ¾ßÁÒ. º°°Å ¾ø½À´Ï´Ù. ¸Ó µû¶óÇϼ¼¿ä.

        0. Behavior and Logic¿¡¼­ InstallScript¸¦ µÎ¹ø Ŭ¸¯ÇÕ´Ï´Ù. ±×·³ ¿À¸¥ÂÊ¿¡ âÀÌ µÎ°³°¡ ¶ßÁÒ. ±Ùµ¥ °¡¿îµ¥°ÍÀº º°º¼ÀÏ ¾ø±¸¿ä.
        ¿À¸¥ÂÊÀÌ Áß¿äÇÕ´Ï´Ù.
        
        1. function OnFirstUIBefore() ¶ó°í µÇÀÖ´Â ºÎºÐÀ» ã½À´Ï´Ù.
        ±×¸®°í´Â Dlg_SdWelcome:, Dlg_SdLisence:..¸Ó ÀÌ·¸°Ô Dlg·Î ½ÃÀÛÇÏ´Â '³ª ´ëÈ­»óÀÚ¿ä~'ÇÏ°í ³»³õ°í ¹öƼ°í ÀÖ´Â ±¸¹®µéÀ» º¼¼öÀִµ¥¿ä.
        c/c++¿¡¼­ Switch¹® ¾ÈÂÊÀÇ ±×...¸Ó³Ä...±×....°Å½Ã±â¶ó°í º¸½Ã¸é µË´Ï´Ù. case serialmanse...ÀÌ·±°Å ¸»ÀÌÁÒ.
        ¾î·µç Event_Drivenó·³ À̺¥Æ®¿¡ µû¶ó µ¿ÀÛÇÏ´Â°Í °°Àºµ¥¿ä. À§¿¡¼­ºÎÅÍ Â÷·Ê´ë·Î´Â ¾Æ´Ï±¸¿ä. goto¹®¿¡ µû¶ó ºÐ±â°¡ µË´Ï´Ù.
        º¸ÅëÀº Dlg_SdWelcome:ºÎÅÍ ½ÃÀÛÇÏÁö¿ä.

        ±×·³ ¿©±â¼­ ¼ø¼­¸¦ Á¤Çغ¼±î¿ä? "ȯ¿µ¸Þ¼¼Áö"->"½Ã¸®¾ó üũÇϱâ"->"¶óÀ̼¾½º º¸±â"->"ÇÁ·Î±×·¥ °æ·ÎÁöÁ¤" Á¦ÀÏ ¹«³­ÇÏÁÒ?
        ÀÌ ¼ø¼­´Â Dlg_SdWelcome: -> Dlg_SdRegisterUserEx: -> Dlg_SdLicense: -> Dlg_SdAskDestPath: µÇ°ÚÁÒ.
        Á¦ÀÏ Ã³À½¿¡ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇϸé Dlg_SdRegisterUserEx:°¡ ¾øÁö¿ä.¸Ó...'³ª ÀÖ¾î~'ÇÏ½Ã¸é ¿ôÁö¿ä.
        ¾î·µç Àü ¾ø¾ú´Âµ¥¿ä. ÀÌ·¸°Ô ÄÚµùÀ» ÇØÁá½À´Ï´Ù.

        // function OnFirstUIBefore() À§¿¡´Ù°¡ ¾Æ·¡¿Í °°ÀÌ ¼±¾ðÇØÁà¾ß ÇÕ´Ï´Ù. ¾ÈÇÏ¸é ¾ÈµÇ¿ë.
        // µÚ¿¡ ÇÔ¼ö¸íÀº dllÀÇ ±×°Í°ú °°¾Æ¾ßÁÒ.
        prototype cdecl INT SerialManSe.SerialManSe_CheckCheckCheck(BYREF STRING);    
        
        //¾Æ·¡´Â function OnFirstUIBefore() ÀÇ Àú ±í¼÷ÇÑ °÷¿¡ ¾¹´Ï´Ù.

    Dlg_SdRegisterUserEx:
        ///////////////////////////////////////////////////////////////////
        szMsg = "";
        szTitle = "";
        svSerial = "";    //ÇÊ¿äÇÑ º¯¼ö´Â ÇÔ¼ö ùºÎºÐ (beginÀÌÀü¿¡)¿¡¼­ ÇÊ¿äÇѸ¸Å­ ¼±¾ðÇÕ´Ï´Ù.
        szDLLName = SUPPORTDIR^"SerialManSe.dll";

        // Âü°í...ÀÌÀü¿¡ UseDLL¿¡ szDLLName·Î °£Á¢ÀûÀ¸·Î Áý¾î³ÖÁö ¾Ê°í SUPPORTDIR^"SerialManSe.dll"¸¦ ÆÄ¶ó¹ÌÅÍ·Î
        // Á÷Á¢ÀüÇØÁá´Âµ¥, ¿¡·¯³ª´õ±º¿ä. ±×·¡¼­ #defineÀ̳ª ÀÌ·¸°Ô º¯¼ö·Î Àü´ÞÇØÁÝ´Ï´Ù.
        bResult = UseDLL(szDLLName);    //À̰оÆÁÖ Áß¿äÇÏÁÒ. ¾Æ±î ¸¸µç dllÀ» ºÒ·¯¿À´Â ÇÔ¼ü´Ï´Ù.
        SdRegisterUserEx(szTitle, szMsg, svName, svCompany, svSerial);

        // ¸Ç ¸¶Áö¸· ÆÄ¶ó¹ÌÅͰ¡ Áß¿äÇÏÁÒ. ¿©±â¿¡ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ½Ã¸®¾ó(*·Î Ç¥½ÃµÇ´Â)ÀÌ µé¾î¿ÀÁÒ. ÀÌ°É dllÀÇ ÇÔ¼ö·Î ³Ñ±â´Â °Ì´Ï´Ù.
        if(bResult = 0) then //¿Ã¹Ù¸¥ ·ÎµùÀÌ µÇ¾úÀ½À» ÀǹÌÇÏÁÒ. ·Îµù ¾ÈµÇ¸é ¸»Â¯ ²ÎÀÌ´Ï ¿¹¿Ü󸮸¦ ÇØÁÖ¼Å¾ß ÇÕ´Ï´Ù.

        // À̰оÈÇØÁÖ¸é 0x80040702¿¡·¯ ³¯ ¼öµµ ÀÖ½À´Ï´Ù.(°¡~²û¿ä)
            bRet = SerialManSe_CheckCheckCheck(svSerial);    //À̰ŠÇÙ½ÉÀÌÁÒ. ½Ã¸®¾ó üũÇÏ´Â °Ì´Ï´Ù. ÆÄ¶ó¹ÌÅÍ...¾Æ±î °­Á¶Çß´ø ±×³ðÀÌÁÒ.

            //¸®ÅϹ޾ÒÁÒ. ±×·³ ¸®ÅϰªÀ» Æò°¡Çؾ߰ÚÁÒ?

            if(bRet = TRUE) then    //Æò°¡ÇØÁÝ´Ï´Ù. '±×°ªÀÌ ¾Ë°íº¸´Ï ¸ÂÀ»°Í °°±âµµ ÇÏ»ï~'ÇÏ°í ¸®Åϵé¾î¿À¸é ´Ù¸§ ÆÄÆ®ÀÎ ¶óÀ̼¾½º·Î ¿Å°Ü¾ßÁö¿ä.
                UnUseDLL( szDLLName );    //¿Å±â±âÀü¿¡ dll '¾È»ç¿ë'ÇØÁÖ°í¿ä.¤»
                goto Dlg_SdLisence;        //¶óÀ̼¾½º·Î ¿Å±é´Ï´Ù.
            else    //¸®ÅÏÀÌ Æ²·È´Ù³×¿ä.
                MessageBox("È¥³¯·¡? Á¦´ë·ç ½á~! ¾ð´É!!!", INFORMATION );    //»ç¿ëÀÚ¸¦ ¾Ð¹ÚÇÏ´Â ÇѸ¶µð..¤¾¤¾
                UnUseDLL( szDLLName );
                goto Dlg_SdRegisterUserEx;    //Ű ÀԷ¹޴ °÷À¸·Î µ¹¾Æ°©´Ï´Ù.
            endif;
        else    //¾îÀÌÄí ¶óÀ̺귯¸®°¡ ¾ø´Ù³×¿ä. ÀÌ·± ºÒ½Ö»ç´Â ¾ø¾î¾ßÁÒ. ±Ùµ¥, µ¿Àûdll·Î dll¸¸µå½É ÀÌ ¸Þ¼¼Áö ¶å´Ï´Ù.
            MessageBox("¾î¼¶ó°í~? ÇÏ´ÃÀ» ºÁ¾ß º°À» µûÁö.", WARNING);
            UnUseDLL( szDLLName );
            abort;
        endif;

        if (nResult = BACK) goto Dlg_SdWelcome;


    -----------------------------------

        ÀÚ~~Àε¥ ½ºÅ©¸³Æ®µµ ´ÙµÆ½À´Ï´Ù. °£È¤ ¿ÞÂÊâÀÇ User Interface¿¡¼­ Dialog¸¦ ¸¸Áö´Â ºÐÀÌ °è½Åµ¥¿ä.
        À§Ä¡¹Ù²Ù°í. Å©±â Á¶Á¤Çϴµ¥´Â ÇÊ¿äÇØµµ ½Ã¸®¾ó üũÇϴ°Ͱú´Â º° °ü·ÃÀÌ ¾ø´ä´Ï´Ù.

    2. ´ÙÀ½...dllÀ» ÇÁ·ÎÁ§Æ®·Î °¡Á®¿Í¾ß°ÚÁö¿ä? Behavior and Logic¿¡¼­ SupportFile / Billboard¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
        ±×·³ º°º¼ÀÏ ¾ø´Â ¿À¸¥ÂÊâ°ú ÂÉ±Ý º¼ÀÏÀÖ´Â °¡¿îµ¥ âÀÌ ³ªÅ¸³ªÁö¿ä. ÀÌ Æ®¸® °¡¿îµ¥¼­ ¸Ç À§¿¡ Language Independent¸¦
        Å¬¸¯ÇÕ´Ï´Ù. ±×·³ ¸Ç ¿À¸¥ÂÊ Ã¢¾Ö º°º¼ÀÏÀÌ »ý±é´Ï´Ù. ¸¶Ä¡ ÆÄÀÏ Å½»ö±â °°Áö¿ä?
        ¿À¸¥ÂÊ ¹öưÀ¸·Î InsertÆÄÀÏ À» ´­·¯¼­ ¾Æ±î ¸¸µç dllÆÄÀÏÀ» °¡Á®¿É´Ï´Ù.(±×·³ ±× ¿ë·®¸¸Å­ ¼Â¾÷ÆÄÀÏ ±Ô¸ð°¡ Ä¿Á®¿ë.)

    ----³¡~~~----------

        ³¡³µ½À´Ï´Ù. ÀÎÁ¦ ºôµå ÇÏ¸é µË´Ï´Ù. ¸Ó dependency scanner·Î Âß ºÒ·¯¿ÍÁִ°ŠÂü ÁÁ°í¿ä. ÀÎÁ¦ ¸¾³õ°í ºôµåÇϽñ⠹ٶø´Ï´Ù.
        ¸Ó...Ãʺ¸ÀÚ°¡ À̶§±îÁö °í»ý°í»ýÇϸ鼭 ½Ã¸®¾ó üũºÎºÐ ¸¸µé¾ú´ø°Å µÎ¼­¾øÀÌ ½è´Âµ¥¿ä. Áß ¹× °í¼öºÐµéÀº ºÎµð º¸Áö ¸¶½Ã°í,
        ÃÊÂ¥ºÐµéÀº Àú¿Í°°ÀÌ °í»ýÇÏÁö ¸¶½Ã¶ó´Â ÀǹÌÇØ¼­ ÀÌ·¸°Ô ½è¾¹´Ï´Ù.
        ÁÁÀº ÇÏ·ç µÇ½Ã±¸¿ä. °¨»çÇÕ´Ï´Ù~~~


    Comment


    ÀÔ·ÂÇÏ3 1283578810



    Locations of visitors to this page