/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste