/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Af-installation
Fra : Nico de Jong


Dato : 09-03-06 08:05

Hej allesammen

Jeg sidder nu med et lille problem, idet en kunde skal have et
af-installeringsprogram til mine ting, så han kan fjerne ting inden maskinen
skal til reparation eller skrotning. Nu kan et program jo ikke slette sig
selv, så der vil være en rest tilbage efter at jeg har slettet de enkelte
filer.
Hvordan løser man sådan et problem på fornuftig vis ?

Nico



 
 
Brian Andersen \(www~ (09-03-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 09-03-06 08:11

Hvis du ved hvilke filer der skal slettes, hvorfor gør du det så ikke
manuelt???

/Brian



Nico de Jong (09-03-2006)
Kommentar
Fra : Nico de Jong


Dato : 09-03-06 10:08


"Brian Andersen (www.europeansoftwarehouse.com)" <x@x.x> skrev i en
meddelelse news:zwQPf.6$dw1.5@news.get2net.dk...
> Hvis du ved hvilke filer der skal slettes, hvorfor gør du det så ikke
> manuelt???

Min fejl; jeg glemte at nævnte nogle ting.
Der skal også lavet lidt om i WIN.INI og andre steder. Jeg skal også lave en
passende back-up af relevante filer. Alt det har jeg styr på; det er kun
maskinel sletning af af-installationsprogrammet. Og som du sikkert ved : man
skal lave slige rutiner efter hvor dum den dummeste bruger er Godt ord
igen!
Nu kunne man nok lægge det i en BAT fil, som så sletter programmet bagefter,
men så har man en BAT fil som rest ...

Nico



Brian Andersen \(www~ (09-03-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 09-03-06 10:47

Ahhh, ser problemstillingen.

For nogle år siden skrev jeg sådan et program til en kunde. Det var godt nok
i forbindelse med et opdateringsprogram, som skulle fjerne sig selv efter
udførelse. Jeg har dog ikke koden længere. Desværre.

Men tricket er at anvende CreateFile og sætte flaget
FILE_FLAG_DELETE_ON_CLOSE. Eksempelvis kunne Program2.exe blive aktiveret af
Program1.exe ved hjælp af CreateFile(...OPEN_EXISTING,
.....FILE_FLAG_DELETE_ON_CLOSE...). Program2 ligger så og venter på, at
processen Program1.exe bliver afsluttet. Når Program1.exe afsluttes, så
sletter Program2.exe filen Program1.exe. Herefter afslutter Program2.exe,
som vil blive slettet af Windows på grund af Flaget:
FILE_FLAG_DELETE_ON_CLOSE.

Tekniskset kan det gøres på mange måder. Man kunne gøre det via Parameter
overførelser (ParamCount og ParamStr). Så \Original\Program.exe opretter en
kopi af sig selv i \Temp mappen. Herefter kaldes \Temp\Program.exe med en
parameter som er stien til \Original\Program.exe. Filen \Temp\Program.exe,
som er kopi af det originale program, tjekker sine parametre og konstatere,
at det skal starte i "slette mode". Nu ligger kopien \Temp\Program.exe så og
venter på at \Original\Program.exe afslutter. Når \Original\Program.exe er
afsluttet, så sletter \Temp\Program.exe filen \Original\Program.exe.
Herefter terminere \Temp\Program.exe og så sletter Windows automatisk filen.

Det er lidt teknisk, men.... Held og lykke.

/Brian



Michael Thomsen (09-03-2006)
Kommentar
Fra : Michael Thomsen


Dato : 09-03-06 10:14

On Thu, 09 Mar 2006 08:04:59 +0100, Nico de Jong <nico@farumdata.dk> wrote:

> Jeg sidder nu med et lille problem, idet en kunde skal have et
> af-installeringsprogram til mine ting, så han kan fjerne ting inden
> maskinen skal til reparation eller skrotning. Nu kan et program jo ikke
> slette sig selv, så der vil være en rest tilbage efter at jeg har
> slettet de enkelte filer.
> Hvordan løser man sådan et problem på fornuftig vis ?

Svjh brugte jeg engang følgende fremgangsmåde:
http://support.microsoft.com/default.aspx?scid=kb;en-us;140570

Bemærk at der er forskel på NT/2000/XP og 95/98/ME

//michael


--
Instead of email, use this: http://mtech.dk/thomsen/contact.php

Brian Andersen \(www~ (09-03-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 09-03-06 10:51

> Svjh brugte jeg engang følgende fremgangsmåde:
> http://support.microsoft.com/default.aspx?scid=kb;en-us;140570
>
> Bemærk at der er forskel på NT/2000/XP og 95/98/ME
>
> //michael
>
>
> --
> Instead of email, use this: http://mtech.dk/thomsen/contact.php

Kender godt tricket.

Der er dog et par ulemper. Filen bliver først slettet efter en Reboot af
Windows. I mellemtiden kan filen eksempelvis være omdøbt, mappe kan være
omdøbt eller filen flyttet, så filen aldrig bliver slettet.

/Brian



Michael Thomsen (09-03-2006)
Kommentar
Fra : Michael Thomsen


Dato : 09-03-06 13:48

On Thu, 09 Mar 2006 10:50:50 +0100, Brian Andersen
(www.europeansoftwarehouse.com) <x@x.x> wrote:

>> Svjh brugte jeg engang følgende fremgangsmåde:
>> http://support.microsoft.com/default.aspx?scid=kb;en-us;140570
>
> Kender godt tricket.
>
> Der er dog et par ulemper. Filen bliver først slettet efter en Reboot af
> Windows. I mellemtiden kan filen eksempelvis være omdøbt, mappe kan være
> omdøbt eller filen flyttet, så filen aldrig bliver slettet.

Øh, var der ikke tale om et afinstallationsprogram? Det bliver vel kun
flyttet/slettet, hvis brugeren gør noget manuelt, og så kan det jo være
ligemeget, så længe programmet lige undersøger situationen før det kører.

Anyways, din FILE_FLAG_DELETE_ON_CLOSE lyder smartere. Den vil jeg huske
til næste gang :)

//michael

--
Instead of email, use this: http://mtech.dk/thomsen/contact.php

Brian Andersen \(www~ (09-03-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 09-03-06 14:15

> Øh, var der ikke tale om et afinstallationsprogram? Det bliver vel kun
> flyttet/slettet, hvis brugeren gør noget manuelt, og så kan det jo være
> ligemeget, så længe programmet lige undersøger situationen før det kører.

Det jeg mener er, at der introduceres en mulig fejlkilde, i og med, at
fileren ikke slettes med det samme. Det virker sikkert perfekt i 99,9% af
alle tilfælde.


> Anyways, din FILE_FLAG_DELETE_ON_CLOSE lyder smartere. Den vil jeg huske
> til næste gang :)

Det kan godt være det er smartere, men der skal skrive lidt kode for at få
skidtet til at virke.

Jævnfør min tidligere beskrivelse, så kunne man også inkorporere et
dedikeret program som en Ressource, som fungerer "Deleter". Dette program
kunne også distribueres selvstændigt, men igen, så kan hovedprogrammet og
Deleter programmet jo blive skilt ad (slettet, flyttet, osv.). Nååhhh, men
det didekerede Deleter program fylder væsentligt mindre end selve
hovedprogrammet, så der skal ikke skrives så meget til disken, da programmet
ikke fylder særligt meget (ingen GUI, osv.). Man skal nok selv implementere
Message Loop'et, så man kan undgå Forms Unit'en og TApplication objektet.
Derved kan man holde program størrelsen meget lille. Dette Deleter program
har kun en opgave og det er at slette hovedetprogrammet når det afsluttes.

Der findes sikkert mange andre løsninger på problemet? Har I nogle forslag?

/Brian



Michael Thomsen (10-03-2006)
Kommentar
Fra : Michael Thomsen


Dato : 10-03-06 10:27

On Thu, 09 Mar 2006 14:15:29 +0100, Brian Andersen
(www.europeansoftwarehouse.com) <x@x.x> wrote:

> Der findes sikkert mange andre løsninger på problemet? Har I nogle
> forslag?

Jeg kiggede lige min kode igennem i går aftes, og faktisk brugte jeg
en helt anden metode

Uninstall programmet undersøger om det bliver kaldt med en bestemt
parameter, hvis ikke kopierer det sig selv til %temp% og kalder sig
selv med den parameter. Herefter slettes alle filer og registry
entries, der tilføjes en "command.com /c del %temp%\filnavn" til RunOnce
i registry, og programmet afsluttes med en "alt er ok" dialogboks.

Jeg skal villig indrømme, at det er lidt af en fuske-metode :)
og hvis jeg kendte FILE_FLAG_DELETE_ON_CLOSE da jeg skrev det havde
jeg nok brugt den (forudsat, at det virker under w9x også).

At brugeren flytter/sletter noget der ligger i temp kan i mine øjne
være underordnet. Hvis det slettes gør det ingen skade, og hvis det
flyttes har vedkommende selv bedt om problemer ;)

//michael

--
Instead of email, use this: http://mtech.dk/thomsen/contact.php

Uffe Kousgaard (09-03-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 09-03-06 11:42

"Nico de Jong" <nico@farumdata.dk> wrote in message
news:omQPf.5$pq1.2@news.get2net.dk...
> Hvordan løser man sådan et problem på fornuftig vis ?

Innosetup kan gøre den slags automatisk. Da det er open source (og skrevet
med delphi) kan du måske finde tricket der.

hilsen
Uffe



Nico de Jong (09-03-2006)
Kommentar
Fra : Nico de Jong


Dato : 09-03-06 16:03

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:44100691$0$84038$edfadb0f@dtext01.news.tele.dk...
> "Nico de Jong" <nico@farumdata.dk> wrote in message
> news:omQPf.5$pq1.2@news.get2net.dk...
> > Hvordan løser man sådan et problem på fornuftig vis ?
>
> Innosetup kan gøre den slags automatisk. Da det er open source (og skrevet
> med delphi) kan du måske finde tricket der.
>
> hilsen
> Uffe
>
I skal allesammen have tak for hjælpen. Nu har jeg ihvertfald noget at gå
videre med. De kunder de kunder.... Uden kunder ville livet være meget
lettere....

Nico



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste