L'auteur
Gregory Adam Belgique Membre Actif (personne physique) # 0000001121 enregistré le 04/06/2006
Fiche personnelle
Note des membres
16/20 3 votes
|
Contributions > 21 - Outils
un simple loader
# 0000000384
ajouté le 02/01/2007 13:21:31 et modifié le 02/01/2007
consulté 9221 fois
Niveau
débutant
Version(s) Foxpro : VFP 9.0 VFP 8.0 VFP 7.0 VFP 6.0 VFP 5.0 VFP 3.0
|
Description |
Ce n'est pas facile quand on doit faire une maj et l'exe se trouve sur un serveur Comment faire ? - creer un projet - Loader
- mettre le code ci-dessous comme main
- faire un build, ansi on obtient loader.exe
- Mise en place
- supposons
- exe se trouve a l'endroit: F:\Adam\Adam.exe
- Au lieu de faire un exe, faire une .App, eg Adam.app
- copier Loader.exe >> F:\Adam\Adam.exe (une seule fois)
- deposer Adam.app dans F:\Adam
- ce qui fait que F:\Adam contient
- Adam.exe: le loader d'environs 9 ou 10 kb
- Adam.app
- Sur chaque pc
- creer un repertoire, eg C:\Adam
- creer un raccourci
- demarrer dans : C:\Adam
- cible: F:\Adam\Adam.exe
- Comment cela fonctionne ?
- Lors du demarrage le 'F:\Adam\Adam.app' sera copie dans C:\Adam si
- C:\adam\Adam.app (local) n'existe pas, ou
- F:\Adam\adam.app est plus recent
- Les maj ?
- Simple
- deposer un nouvel adam.app sur le serveur (ici F:\Adam\adam.app)
- tout utilisateur qui demarrera l'appli apres aura le 'adam.app' le plus recent
|
Code source : |
** Loader
#define TRUE .T.
#define FALSE .F.
procedure Loader()
lparameters _p01,_p02,_p03,_p04,_p05,_p06,_p07,_p08,_p09,_p10,_p11,_p12,_p13, ;
_p14,_p15,_p16,_p17,_p18,_p19,_p20,_p21,_p22,_p23,_p24,_p25,_p26,_p27
declare Integer GetFileAttributes in win32api string @
declare Integer DeleteFile in win32api string @
declare Integer CopyFile in win32api string @, string @, Integer
acti screen
_screen.Fontname = 'Courier New'
_screen.Fontsize = 10
set FullPath On
local StartupApp, LocalApp, cmd, i, n, MustCopy, fd
n = pCount()
StartupApp = addbs(justpath(StartUpExe()))+juststem(StartUpExe())+'.app'
LocalApp = addbs(_vfp.DefaultFilePath)+juststem(StartUpExe())+'.app'
cmd = 'do ("' + m.LocalApp + '")' + iif(m.n < 1, '', [ with "] + transf(m._p01) + ["])
for i = 2 to n
cmd = m.cmd + [,"] + transf(eval('m._p' + padl(m.i,2,'0'))) + ["]
endfor
for i = 1 to 27
release ('_p'+padl(m.i,2,'0'))
endfor
MustCopy = FALSE
do case
case ( m.StartupApp == m.LocalApp )
&& do nothing
case !FileExists(m.StartupApp)
case !FileExists(m.LocalApp)
MustCopy = TRUE
case fdate(m.StartupApp,1) <= fdate(m.LocalApp,1)
otherwise
fd = fopen(m.LocalApp)
if( m.fd > 0 )
=fclose(m.fd)
MustCopy = !empty(DeleteFile(m.LocalApp))
endif
endcase
do case
case !m.MustCopy
case empty(CopyFile(@m.StartupApp, @m.LocalApp, 1))
endcase
if( !FileExists(m.LocalApp) )
=MessageBox('Cannot find ' + LocalApp, 0+16, JustStem(LocalApp))
return
endif
release StartupApp, LocalApp, i, n, MustCopy, fd
&cmd
endproc
*----------------------------------------------------------------------------
function StartUpExe()
do case
case ( ':' $ sys(16,0) )
return substr(sys(16,0), rat(':', sys(16,0))-1)
otherwise
return substr(sys(16,0), rat('\\', sys(16,0)))
endcase
endfunc
*----------------------------------------------------------------------------
Function FileExists(FileName)
return (GetFileAttributes(@m.FileName) <> -1)
endfunc
*--------------------------------------------------------------------------
|
Commentaires |
Aucun commentaire enregistré ...
|
|
|