home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SAMPLES / INSTALL.PRG < prev    next >
Text File  |  1994-05-09  |  8KB  |  242 lines

  1. // FiveWin installation program   ver 1.0
  2.  
  3. // Please feel free to use it for your own installations,
  4. // and modify it to suit your needs
  5.  
  6. #include "FiveWin.ch"
  7. #include "Install.ch"
  8.  
  9. #define MERGEPAINT 12255782    // 0xBB0226
  10. #define SRCAND      8913094
  11.  
  12. static oWnd, hBmpText1, hBmpText2, oMeter, nPercent := 0
  13. static cTarget := "c:\FiveWin.16                                 "
  14.  
  15. //----------------------------------------------------------------------------//
  16.  
  17. function Main()
  18.  
  19.    SET 3DLOOK ON
  20.  
  21.    hBmpText1 = LoadBitmap( GetResources(), "Inst1" )
  22.    hBmpText2 = LoadBitmap( GetResources(), "Inst2" )
  23.  
  24.    DEFINE WINDOW oWnd STYLE nOr( WS_POPUP, WS_VISIBLE ) COLOR "W/N"
  25.  
  26.    ACTIVATE WINDOW oWnd MAXIMIZED ;
  27.       ON INIT  DlgInstall() ;
  28.       ON PAINT ( FillBlue(), SayBitmaps() )
  29.  
  30.    DeleteObject( hBmpText1 )
  31.    DeleteObject( hBmpText2 )
  32.  
  33. return nil
  34.  
  35. //----------------------------------------------------------------------------//
  36.  
  37. function DlgInstall()
  38.  
  39.    local oDlg
  40.    local lLib  := .t., lSamples := .t., lInclude := .t., lManual := .t.,;
  41.          lUtil := .t., lSource := .t., lGroup := .t.
  42.    local nTotal   := 2760000
  43.    local oRequired
  44.  
  45.    DEFINE DIALOG oDlg RESOURCE "Install" OF oWnd
  46.  
  47.    REDEFINE CHECKBOX lLib ID ID_LIB  OF oDlg ;
  48.       ON CHANGE ( nTotal += If( lLib, 550000, -550000 ),;
  49.                   oRequired:SetText( nTotal ) )
  50.  
  51.    REDEFINE CHECKBOX lSamples ID ID_EXAMPLES  OF oDlg ;
  52.       ON CHANGE ( nTotal += If( lSamples, 1150000, -1150000 ),;
  53.                   oRequired:SetText( nTotal ) )
  54.  
  55.    REDEFINE CHECKBOX lInclude ID ID_HEADERS   OF oDlg ;
  56.       ON CHANGE ( nTotal += If( lInclude, 90000, -90000 ),;
  57.                   oRequired:SetText( nTotal ) )
  58.  
  59.    REDEFINE CHECKBOX lManual ID ID_MANUALS   OF oDlg ;
  60.       ON CHANGE ( nTotal += If( lManual, 600000, -600000 ),;
  61.                   oRequired:SetText( nTotal ) )
  62.  
  63.    REDEFINE CHECKBOX lUtil ID ID_UTILITIES OF oDlg ;
  64.       ON CHANGE ( nTotal += If( lUtil, 20000, -20000 ),;
  65.                   oRequired:SetText( nTotal ) )
  66.  
  67.    REDEFINE CHECKBOX lSource  ID ID_SOURCE OF oDlg ;
  68.       ON CHANGE ( nTotal += If( lSource, 350000, -350000 ),;
  69.                   oRequired:SetText( nTotal ) )
  70.  
  71.    REDEFINE GET cTarget ID ID_TARGET OF oDlg
  72.  
  73.    REDEFINE SAY oRequired PROMPT nTotal PICTURE "    999,999,999" ;
  74.       ID ID_REQUIRED OF oDlg
  75.  
  76.    REDEFINE SAY PROMPT DiskSpace() PICTURE "  999,999,999" ;
  77.       ID ID_AVAILABLE OF oDlg
  78.  
  79.    REDEFINE CHECKBOX lGroup ID ID_GROUP OF oDlg
  80.  
  81.    REDEFINE METER oMeter VAR nPercent TOTAL 100 ID ID_METER OF oDlg
  82.  
  83.    REDEFINE BUTTON ID ID_CONTINUE OF oDlg ;
  84.       ACTION ( CopyFiles( lLib, lSamples, lInclude, lManual,;
  85.                           lUtil, lSource ),;
  86.                If( lGroup, BuildGroup(),),;
  87.                MsgInfo( "FiveWin successfully installed!" ),;
  88.                oDlg:End() )
  89.  
  90.    REDEFINE BUTTON ID ID_INFO OF oDlg ;
  91.       ACTION ShellAbout( FWVERSION, FWCOPYRIGHT,;
  92.                          LoadIcon( GetInstance(), "FiveWin" ) )
  93.  
  94.    REDEFINE BUTTON ID 230 OF oDlg ;
  95.       ACTION ( MsgStop( "Installation cancelled" ), oDlg:End() )
  96.  
  97.    ACTIVATE DIALOG oDlg CENTERED
  98.  
  99.    oWnd:End()
  100.  
  101. return nil
  102.  
  103. //----------------------------------------------------------------------------//
  104.  
  105. function SayBitmaps()
  106.  
  107.    local hDC := oWnd:GetDC()
  108.  
  109.    DrawBitmap( hDC, hBmpText1, 3, 3, 0, 0, SRCAND )
  110.    DrawBitmap( hDC, hBmpText1, 0, 0, 0, 0, MERGEPAINT )
  111.  
  112.    DrawBitmap( hDC, hBmpText2, 433, 133, 0, 0, SRCAND )
  113.    DrawBitmap( hDC, hBmpText2, 430, 130, 0, 0, MERGEPAINT )
  114.  
  115.    oWnd:ReleaseDC()
  116.  
  117. return nil
  118.  
  119. //----------------------------------------------------------------------------//
  120.  
  121. function FillBlue()
  122.  
  123.    local hWnd  := oWnd:hWnd
  124.    local aRect := GetClientRect( hWnd )
  125.    local oBrush
  126.    local nTop    := aRect[ 1 ]
  127.    local nBottom := aRect[ 3 ]
  128.    local nBlue   := 200
  129.    local nSteps  := ( aRect[ 3 ] - aRect[ 1 ] ) / 3
  130.    local n
  131.  
  132.    oWnd:GetDC()
  133.  
  134.    aRect[ 3 ] = 0
  135.  
  136.    for n = 1 to nSteps
  137.  
  138.       aRect[ 3 ] += 3
  139.  
  140.       DEFINE BRUSH oBrush COLOR RGB( 0, 0, nBlue )
  141.       FillRect( oWnd:hDC, aRect, oBrush:hBrush )
  142.       RELEASE BRUSH oBrush
  143.  
  144.       aRect[ 1 ] += 3
  145.       nBlue -= 1
  146.    next
  147.  
  148.    oWnd:ReleaseDC()
  149.  
  150. return nil
  151.  
  152. //----------------------------------------------------------------------------//
  153.  
  154. function CopyFiles( lLib, lSamples, lInclude, lManual, lUtil, lSource )
  155.  
  156.    nPercent = 0 ; oMeter:Refresh() ; SysRefresh()
  157.    cTarget = AllTrim( cTarget )
  158.  
  159.    if ! File( cTarget )
  160.       lMkDir( cTarget )
  161.       lMkDir( cTarget + "\Examples" )
  162.       lMkDir( cTarget + "\Icons" )
  163.       lMkDir( cTarget + "\IDE" )
  164.       lMkDir( cTarget + "\lib" )
  165.       lMkDir( cTarget + "\Manual" )
  166.       lMkDir( cTarget + "\Source" )
  167.    endif
  168.  
  169.    if lLib
  170.       nPercent = 10 ; oMeter:Refresh() ; SysRefresh()
  171.       LZCopyFile( "d:FiveWin.li_", cTarget + "\lib\FiveWin.lib" )
  172.       nPercent = 20 ; oMeter:Refresh() ; SysRefresh()
  173.       LZCopyFile( "d:WinApi.li_",  cTarget + "\lib\WinApi.lib" )
  174.       nPercent = 30 ; oMeter:Refresh() ; SysRefresh()
  175.       LZCopyFile( "d:501_520.li_", cTarget + "\lib\501_520.lib" )
  176.       nPercent = 40 ; oMeter:Refresh() ; SysRefresh()
  177.    endif
  178.  
  179.    if lManual
  180.       LZCopyFile( "d:readme.tx_", cTarget + "\Readme.txt" )
  181.       nPercent = 42 ; oMeter:Refresh() ; SysRefresh()
  182.       LZCopyFile( "d:Fw16.hl_", cTarget + "\manual\Fw16.hlp" )
  183.       nPercent = 52 ; oMeter:Refresh() ; SysRefresh()
  184.    endif
  185.  
  186.  
  187. return nil
  188.  
  189. //----------------------------------------------------------------------------//
  190.  
  191. function BuildGroup()
  192.  
  193.    local oDde
  194.  
  195.    DEFINE DDE oDde SERVICE "Progman" TOPIC "Progman"
  196.  
  197.    ACTIVATE DDE oDde
  198.  
  199.    oDde:Execute( "[DeleteGroup( FiveWin 1.6 )]" )
  200.    oDde:Execute( "[CreateGroup( FiveWin 1.6 )]" )
  201.    oDde:Execute( "[ShowGroup( FiveWin 1.6, 1 )]" )
  202.    oDde:Execute( "[AddItem(" + cTarget + "\Readme.txt, Readme.txt )]" )
  203.    oDde:Execute( "[AddItem(" + cTarget + "\manual\Fw16.hlp, Fw16.hlp )]" )
  204.    oDde:Execute( "[AddItem(" + cTarget + "\ide\ide.exe, IDE, " + ;
  205.                   cTarget + "\IDE\FwIde.ico )]" )
  206.  
  207.    oDde:Execute( "[AddItem( c:\command.com, MsDos, " + ;
  208.                   cTarget + "\Icons\MsDos.ico,,,," + cTarget + ")]" )
  209.  
  210.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor01.exe, Tutor01," + ;
  211.                   cTarget + "\icons\Tutor.ico )]" )
  212.  
  213.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor02.exe, Tutor02," + ;
  214.                   cTarget + "\icons\Tutor.ico )]" )
  215.  
  216.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor03.exe, Tutor03," + ;
  217.                   cTarget + "\icons\Tutor.ico )]" )
  218.  
  219.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor04.exe, Tutor04," + ;
  220.                   cTarget + "\icons\Tutor.ico )]" )
  221.  
  222.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor05.exe, Tutor05," + ;
  223.                   cTarget + "\icons\Tutor.ico )]" )
  224.  
  225.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor06.exe, Tutor06," + ;
  226.                   cTarget + "\icons\Tutor.ico )]" )
  227.  
  228.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor07.exe, Tutor07," + ;
  229.                   cTarget + "\icons\Tutor.ico )]" )
  230.  
  231.    oDde:Execute( "[AddItem(" + cTarget + "\examples\Tutor08.exe, Tutor08," + ;
  232.                   cTarget + "\icons\Tutor.ico )]" )
  233.  
  234.    oDde:Execute( "[AddItem(" + cTarget + "\examples\AllTest.bat, Build Examples," + ;
  235.                   cTarget + "\icons\Build.ico,0,2,1 )]" )
  236.  
  237.    RELEASE DDE oDde
  238.  
  239. return nil
  240.  
  241. //----------------------------------------------------------------------------//
  242.