|  | 		    
					
        
         
          
         
	
          | |  | At opdatere sig selv [VB6] Fra : Jens Vestergaard
 | 
 Dato :  03-05-02 21:06
 | 
 |  | 
 
            Folks,
 Er der en begavet måde, hvorpå en EXE kan 'opdatere sig selv'?
 Mange programmer kan hente nye versioner af sig selv på Nettet, og den del
 er ikke noget problem, men hvordan får man den nye version til at erstatte
 den gamle/eksisterende, så det er den nye der starter næste gang?
 Man ku' jo lave et lille 'loader'-program, eller man kunne lade en anden app
 se efter og evt. hente opdateringen, men det synes lidt omstændeligt. Det
 smukkeste er vel at gøre det indefra programmet selv.
 Er der slet og ret et API-kald, der siger 'slet-mig-når-jeg-lukker' (i
 overført betydnking...)
 --
 mvh
 Jens Vestergaard
www.railsoft.dk |  |  | 
  Helge Bjørkhaug (03-05-2002) 
 
	
          | |  | Kommentar Fra : Helge Bjørkhaug
 | 
 Dato :  03-05-02 22:55
 | 
 |  | On Fri, 3 May 2002 22:06:09 +0200, "Jens Vestergaard" <j@railsoft.dk> wrote:
 
 >Folks,
 >
 >Er der en begavet måde, hvorpå en EXE kan 'opdatere sig selv'?
 >
 >Mange programmer kan hente nye versioner af sig selv på Nettet, og den del
 >er ikke noget problem, men hvordan får man den nye version til at erstatte
 >den gamle/eksisterende, så det er den nye der starter næste gang?
 >
 >Man ku' jo lave et lille 'loader'-program, eller man kunne lade en anden app
 >se efter og evt. hente opdateringen, men det synes lidt omstændeligt. Det
 >smukkeste er vel at gøre det indefra programmet selv.
 >
 >Er der slet og ret et API-kald, der siger 'slet-mig-når-jeg-lukker' (i
 >overført betydnking...)
 
 Nei, tror ikke det. Vanskelig å erstatte en fil som er i bruk.
 En loader (eller unloader) er nok den enkleste løsningen.
 Evt. bruk RunOnce key'en i Registry.
 Du trenger fortsatt ett eget program for å erstatte exe-filen.
 
 --
 Snutten
 Fjern helge og .invalid fra mailadressen før du svarer via mail.
 
 
 |  |  | 
  Jens Vestergaard (04-05-2002) 
 
	
          | |  | Kommentar Fra : Jens Vestergaard
 | 
 Dato :  04-05-02 16:00
 | 
 |  | 
 
            "Helge Bjørkhaug" <helgesnutt@techie.online.no.invalid> skrev i en
 meddelelse news:dl06du0nltgi9rmaluk5enn76qks5so81i@4ax.com...
 > On Fri, 3 May 2002 22:06:09 +0200, "Jens Vestergaard" <j@railsoft.dk>
 wrote:
 > >Er der en begavet måde, hvorpå en EXE kan 'opdatere sig selv'?
 > Nei, tror ikke det. Vanskelig å erstatte en fil som er i bruk.
 > En loader (eller unloader) er nok den enkleste løsningen.
 > Evt. bruk RunOnce key'en i Registry.
 > Du trenger fortsatt ett eget program for å erstatte exe-filen.
 Jeg tror, jeg ender med at lave et egentligt opdateringsprogram - så opstår
 problemet kun, når opdateringsprogrammet skal opdateres....    --
 mvh
 Jens Vestergaard
www.railsoft.dk |  |  | 
   Tomas Christiansen (05-05-2002) 
 
	
          | |  | Kommentar Fra : Tomas Christiansen
 | 
 Dato :  05-05-02 22:56
 | 
 |  | 
 
            Jens Vestergaard skrev:
 > Jeg tror, jeg ender med at lave et egentligt opdateringsprogram - så
 opstår
 > problemet kun, når opdateringsprogrammet skal opdateres....    Lidt afhængig af Windows-versionen er det muligt via API-kald at
 udskifte exe-filer som er i brug (mener at det kræver Windows NT eller
 højere).
 Desuden er der mulighed for at angive at en (eller flere) fil(er) skal
 udskiftes med nogle nye eller slettes ved næste systemstart. I Windows
 95 fungerede det ved hjælp af en simpel ini-fil, som angav de
 relevante fil-omdøbninger. Jeg ved ikke hvordan det styres i nyere
 OS'er.
 Jeg søgte lige lidt og fandt API-kaldet "SetupInstallFile" (findes
 også i en "SetupInstallFileEx" version), som ser ud til at skulle
 virke i alle Windowsversioner fra 95 til XP, og som bl.a. har følgende
 option:
 SP_COPY_FORCE_IN_USE
 If the target exists, behave as if it is in use and queue the file for
 copying on the next system reboot.
 Har aldrig selv prøvet at bruger API'et, så du må selv ud og søge
 info.
 -------
 Tomas
            
             |  |  | 
  CADmageren (07-11-2002) 
 
	
          | |  | Kommentar Fra : CADmageren
 | 
 Dato :  07-11-02 15:31
 | 
 |  | 
 
            Hej Jens. 
 Ved godt at det er en gammel tråd, men alligevel så faldt jeg lige over
 den.
 Windows har fat i exe filens interne id, under programkørsel, og derfor
 kan filen ikke umiddelbart slettes. MEN det er faktisk muligt at omdøbe
 filen, og derefter lave en ny fil med samme navn. Derefter får du den
 nye version næste gang du starter. Og det kan sagtens laves fra det
 samme program.
 Havde problemet i en netværks installation, hvor der var 60 brugere der
 brugte det samme EXE program. Her fik jeg ikke lov til at opdatere
 programmet før alle brugere havde lukket programmet. Indtil jeg altså
 fandt ovenstående løsning.
 Men på nuværende tidspunkt har du vel fundet en løsning..
 Mvh
www.cadmageren.dk Michael Christoffersen
 -- 
 Leveret af:
http://www.kandu.dk/ "Vejen til en hurtig løsning"
            
             |  |  | 
  preben nielsen (07-11-2002) 
 
	
          | |  | Kommentar Fra : preben nielsen
 | 
 Dato :  07-11-02 17:15
 | 
 |  | 
 "CADmageren" <CADmageren.news@kandu.dk> skrev i en meddelelse
 news:tEuy9.5225$oC3.798417@news010.worldonline.dk...
 
 > Windows har fat i exe filens interne id, under programkørsel, og
 derfor
 > kan filen ikke umiddelbart slettes. MEN det er faktisk muligt at
 omdøbe
 > filen, og derefter lave en ny fil med samme navn. Derefter får
 du den
 > nye version næste gang du starter. Og det kan sagtens laves fra
 det
 > samme program.
 >
 > Havde problemet i en netværks installation, hvor der var 60
 brugere der
 > brugte det samme EXE program. Her fik jeg ikke lov til at
 opdatere
 > programmet før alle brugere havde lukket programmet. Indtil jeg
 altså
 > fandt ovenstående løsning.
 
 Jeg har ikke set det indlæg du svarer på, men metoden med at kunne
 omdøbe en låst fil kan du ikke stole på. Måske det er en fejl at
 du kan - her hos os kan man ikke ikke omdøbe en .exe som er i
 brug.
 
 
 --
 /\ preben nielsen
 \/\ prel@post.tele.dk
 
 
 
 
 |  |  | 
   Jens Vestergaard (07-11-2002) 
 
	
          | |  | Kommentar Fra : Jens Vestergaard
 | 
 Dato :  07-11-02 17:33
 | 
 |  | 
 
            "preben nielsen" <prel@post.tele.dk> skrev i en meddelelse
 news:3dca91a1$0$206$edfadb0f@dread11.news.tele.dk...
 >
 > "CADmageren" <CADmageren.news@kandu.dk> skrev i en meddelelse
 > news:tEuy9.5225$oC3.798417@news010.worldonline.dk...
 >
 > > Windows har fat i exe filens interne id, under programkørsel, og
 >> derfor kan filen ikke umiddelbart slettes. MEN det er faktisk
 >> muligt at omdøbe filen, og derefter lave en ny fil med samme navn.
 > Jeg har ikke set det indlæg du svarer på, men metoden med at kunne
 > omdøbe en låst fil kan du ikke stole på. Måske det er en fejl at
 > du kan - her hos os kan man ikke ikke omdøbe en .exe som er i
 > brug.
 Det oprindelige indlæg var fra undertegnede - og efter CADmagerens oplysning
 har jeg lavet en (meget hurtig) test, som peger på, at det virker. I hvert
 fald med et ultrakort VB6-kompileret program på W2K pro.
 Det springende punkt er måske, om app'en har 'fat' i noget eksternt...
 database... eller lignende. Det har jeg ikke prøvet endnu. Men ideen er
 spændende, selvom jeg også synes, at det lyder lidt 'farligt'.
 Men hva': Hvo intet vover osv.
 --
 mvh
 Jens Vestergaard
www.railsoft.dk Døgnets jernbanenyheder: www.railsoft.dk/medier.asp |  |  | 
    Tomas Christiansen (09-11-2002) 
 
	
          | |  | Kommentar Fra : Tomas Christiansen
 | 
 Dato :  09-11-02 22:27
 | 
 |  | Jens Vestergaard skrev:
 > Det oprindelige indlæg var fra undertegnede - og efter CADmagerens
 oplysning
 > har jeg lavet en (meget hurtig) test, som peger på, at det virker. I
 hvert
 > fald med et ultrakort VB6-kompileret program på W2K pro.
 
 Jeg mener at Microsoft har et lille usupporteret program ved navn
 inuse.exe, som kan udskifte filer i brug. Måske har SysInternals også
 noget lignende.
 
 Mon ikke man, ét eller andet sted (MS eller SysInternals), kan få fat
 i sourcen til sådan en utillity, og se hvad der skal til for, med
 sikkerhed, at klare tricket?
 
 -------
 Tomas
 
 
 
 |  |  | 
     preben nielsen (10-11-2002) 
 
	
          | |  | Kommentar Fra : preben nielsen
 | 
 Dato :  10-11-02 07:55
 | 
 |  | 
 "Tomas Christiansen" <toc-nospam-01@blikroer.dk> skrev i en
 meddelelse news:aqjujn$8ua$1@news.cybercity.dk...
 
 > Jeg mener at Microsoft har et lille usupporteret program ved
 navn
 > inuse.exe, som kan udskifte filer i brug. Måske har SysInternals
 også
 > noget lignende.
 >
 > Mon ikke man, ét eller andet sted (MS eller SysInternals), kan
 få fat
 > i sourcen til sådan en utillity, og se hvad der skal til for,
 med
 > sikkerhed, at klare tricket?
 
 InUse is a command-line tool that performs on-the-fly replacement
 of files currently in use by the operating system. You must be a
 member of the Administrators group to use this tool.
 InUse is primarily used to replace locked operating system files.
 After running the tool, the file specified is not replaced until
 the system is restarted. During restart, the system moves the file
 immediately after AUTOCHK is run, but before creating any paging
 files. This tool is useful for troubleshooting purposes, where you
 might need to replace an individual file on your computer instead
 of an entire set of files.
 
 > -------
 > Tomas
 
 
 --
 /\ preben nielsen
 \/\ prel@post.tele.dk
 
 
 
 
 |  |  | 
 |  |