/ 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
God idé efterlyses
Fra : PL


Dato : 23-12-01 12:04

Hej alle NG'er

Først en rigtig glædelig Jul !!!

Jeg vil gerne lave et Uninstall program.
Problemet er så, hvordan gør man, når Windows brokker sig over, at filen
bruges i øjeblikket af Windows og det er natueligvis, når filen til sidst
skal slette sig selv.

Mine tanker har været at efterlade Uninstall.exe et sted i maskinen, men det
er jo ikke særlig professionelt.
Mit spørgsmål er derfor: "Hvordan undgår man at Windows brokker sig, når
filen skal slette sig selv" ???

PL



 
 
Thomas Rose (23-12-2001)
Kommentar
Fra : Thomas Rose


Dato : 23-12-01 12:38

Hej PL,

"PL" <jessie-peter@get2net.dk> wrote in message
news:a04dp2$7ph$1@sunsite.dk...
> Først en rigtig glædelig Jul !!!

Tak - I lige måde!

> Jeg vil gerne lave et Uninstall program.
> Problemet er så, hvordan gør man, når Windows brokker sig over, at filen
> bruges i øjeblikket af Windows og det er natueligvis, når filen til sidst
> skal slette sig selv.
>
> Mine tanker har været at efterlade Uninstall.exe et sted i maskinen, men
det
> er jo ikke særlig professionelt.
> Mit spørgsmål er derfor: "Hvordan undgår man at Windows brokker sig, når
> filen skal slette sig selv" ???

Som jeg ser det, vil du kunne løbe ind i to problemer under
afinstallationen: en fil der skal fjernes er i brug, og selve
installations/afinstallations-programmet kører og er derfor også i brug. I
det første tilfælde vil man ofte (efter at have spurgt brugeren) genstarte
maskine, og fortsætte afinstallationen derefter. I det andet tilfælde kan du
gøre som i første tilfælde, eller få lavet en mekanisme der f.eks. kan lukke
dit program og herefter eksekvere en .bat-fil der rydder det sidste op (en
..bat-fil kan godt slette sig selv).

Held og lykke,
Thomas



PL (23-12-2001)
Kommentar
Fra : PL


Dato : 23-12-01 17:15

Hej Thomas

Det du her skriver, er også det, som jeg er kommet frem til. MEEEN jeg var
så naiv at tro, det kunne lade sig gøre på en eller anden snedig måde.

PL

"Thomas Rose" <trose@get2net.dk> skrev i en meddelelse
news:3c25c1c7$0$62879$edfadb0f@dspool01.news.tele.dk...
> Hej PL,
>
> "PL" <jessie-peter@get2net.dk> wrote in message
> news:a04dp2$7ph$1@sunsite.dk...
> > Først en rigtig glædelig Jul !!!
>
> Tak - I lige måde!
>
> > Jeg vil gerne lave et Uninstall program.
> > Problemet er så, hvordan gør man, når Windows brokker sig over, at filen
> > bruges i øjeblikket af Windows og det er natueligvis, når filen til
sidst
> > skal slette sig selv.
> >
> > Mine tanker har været at efterlade Uninstall.exe et sted i maskinen, men
> det
> > er jo ikke særlig professionelt.
> > Mit spørgsmål er derfor: "Hvordan undgår man at Windows brokker sig, når
> > filen skal slette sig selv" ???
>
> Som jeg ser det, vil du kunne løbe ind i to problemer under
> afinstallationen: en fil der skal fjernes er i brug, og selve
> installations/afinstallations-programmet kører og er derfor også i brug. I
> det første tilfælde vil man ofte (efter at have spurgt brugeren) genstarte
> maskine, og fortsætte afinstallationen derefter. I det andet tilfælde kan
du
> gøre som i første tilfælde, eller få lavet en mekanisme der f.eks. kan
lukke
> dit program og herefter eksekvere en .bat-fil der rydder det sidste op (en
> .bat-fil kan godt slette sig selv).
>
> Held og lykke,
> Thomas
>
>



Bjarke Freund-Hansen (23-12-2001)
Kommentar
Fra : Bjarke Freund-Hansen


Dato : 23-12-01 21:23

On Sun, 23 Dec 2001 17:14:31 +0100, "PL" <jessie-peter@get2net.dk>
wrote:

>Det du her skriver, er også det, som jeg er kommet frem til. MEEEN jeg var
>så naiv at tro, det kunne lade sig gøre på en eller anden snedig måde.

Det kan det også, prøv og kigge på nøglen
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce i
regdatabasen. Nøgler deri bliver eksveret efter genstart, og derefter
slettet. Det er det de fleste install/uninstall programmer bruger.

Btw. prøv at kigge på http://usenet.dk/netikette/citatteknik.html

PL (24-12-2001)
Kommentar
Fra : PL


Dato : 24-12-01 00:15

Tak Bjarke dit foreslag lyder virkeligt interessant.

PL

NB!!! Som du kan se, har jeg læst på nedenstående.
> Btw. prøv at kigge på http://usenet.dk/netikette/citatteknik.html



PL (24-12-2001)
Kommentar
Fra : PL


Dato : 24-12-01 12:55

Hej Bjarke

Jeg har nu lavet et testprogram, som ganske rigtigt kører 1 gang vha.
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce "

Mit problem er nu, at programmet ikke kan slette sig selv.

Programmet ser således ud:
program Project1;

uses
Forms,
sysutils,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
Form1.Destroy;
sysutils.DeleteFile('C:\A\Project1.exe');

end.

Efter hvad jeg har forstået burde programmet kunne slette sig selv - eller
HVAD ???

sysutils.DeleteFile('C:\A\Project1.exe') er god nok;

PL



Steen Jensen (25-12-2001)
Kommentar
Fra : Steen Jensen


Dato : 25-12-01 09:19

Hej Peter

PL skrev i meddelelsen ...
>Hej Bjarke
>
>Jeg har nu lavet et testprogram, som ganske rigtigt kører 1 gang vha.
>"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce "
>
>Mit problem er nu, at programmet ikke kan slette sig selv.
>
>Programmet ser således ud:
>program Project1;
>
>uses
> Forms,
> sysutils,
> Unit1 in 'Unit1.pas' {Form1};
>
>{$R *.RES}
>
>begin
> Application.Initialize;
> Application.CreateForm(TForm1, Form1);
> Application.Run;
> Form1.Destroy;
> sysutils.DeleteFile('C:\A\Project1.exe');
>
>end.
>
>Efter hvad jeg har forstået burde programmet kunne slette sig selv - eller
>HVAD ???
>
>sysutils.DeleteFile('C:\A\Project1.exe') er god nok;
>
>PL
>
>

Er det ikke lige lovligt meget at gøre ud af det program
Det her skulle være nok:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

begin
DeleteFile('C:\A\Project1.exe');
end.

Men så har du jo stadig filen liggende eftersom en exefil ikke kan slette
sig selv. Du kan evt. prøve at skrive 'command.com /c del filnavn.ext' i
RunOnce

Med venlig hilsen
Steen




Steen Jensen (25-12-2001)
Kommentar
Fra : Steen Jensen


Dato : 25-12-01 09:30

Hej igen

Steen Jensen skrev i meddelelsen
<3c28369f$0$5499$edfadb0f@dspool01.news.tele.dk>...
>Men så har du jo stadig filen liggende eftersom en exefil ikke kan slette
>sig selv. Du kan evt. prøve at skrive 'command.com /c del filnavn.ext' i
>RunOnce
>
>Med venlig hilsen
>Steen
>
>

Der er faktisk også en mulighed mere, jeg ved dog ikke om den
virker på NT/2000/XP. Prøv at se i C:\Windows\Wininit.bak. Der
kan f.eks stå

[Rename]
NUL=C:\TEMP\TEST.TXT

hvis du omdøber den til Wininit.ini vil C:\Temp\Test.txt blive
slettet næste gang de rebooter.

Med venlig hilsen
Steen




PL (25-12-2001)
Kommentar
Fra : PL


Dato : 25-12-01 12:05

Hej Steen - one more time

Kan du kort forklare, hvad der er forskel på {$APPTYPE GUI} og {$APPTYPE
CONSOLE}

På forhånd tak

PL



Steen Jensen (25-12-2001)
Kommentar
Fra : Steen Jensen


Dato : 25-12-01 12:43

Hej Peter

PL skrev i meddelelsen ...
>Hej Steen - one more time
>
>Kan du kort forklare, hvad der er forskel på {$APPTYPE GUI} og {$APPTYPE
>CONSOLE}
>
>På forhånd tak
>
>PL
>
>

CONSOLE er et DOS program og gør derfor ikke gør brug af den grafiske
brugerflade GUI (Graphical User Interface)

Bemærk derfor at størrelsen på exefilen bliver 38-39 kb i stedet for over
300 kb.

Du kan få størrelsen på exefilen helt ned på ca. 9 kb hvis du bruger
DeleteFile
fra Windows i stedet for SysUtils. Prøv at rette SysUtils til Windows.

program Project1;

{$APPTYPE CONSOLE}

uses
Windows;

{$R *.Res}

begin
DeleteFile('C:\Temp\Test.txt');
end.

Hvis du fjerner linien {$R *.Res} bliver filstørrelsen endnu mindre, men
så mangler ikonet.

Med venlig hilsen
Steen




PL (25-12-2001)
Kommentar
Fra : PL


Dato : 25-12-01 13:02

Tak Steen

PL



Uffe Kousgaard (26-12-2001)
Kommentar
Fra : Uffe Kousgaard


Dato : 26-12-01 09:52

Den kan blive endnu mindre, hvis man laver en batch fil Så skulle 20
bytes vist være nok.

"Steen Jensen" <steen.jensen@mail.dk> wrote in message
news:3c28663a$0$5450$edfadb0f@dspool01.news.tele.dk...
> begin
> DeleteFile('C:\Temp\Test.txt');
> end.
>



PL (25-12-2001)
Kommentar
Fra : PL


Dato : 25-12-01 11:58

Hej Steen

Din fidus 'command.com /c del filnavn.ext' virkede JEG TAKKER

PL



JET-SET WILLY (26-12-2001)
Kommentar
Fra : JET-SET WILLY


Dato : 26-12-01 00:30

PL skrev i meddelelsen ...

>Mit spørgsmål er derfor: "Hvordan undgår man at Windows brokker sig, når
>filen skal slette sig selv" ???


Kan filen ikke - på én eller anden måde - kopiere sig
selv ind i RAM, for derefter at starte dette program
(det i RAM-en), og afslutte sig selv (det på disken)?!


Steen Jensen (26-12-2001)
Kommentar
Fra : Steen Jensen


Dato : 26-12-01 08:41

Hej JET-SET WILLY

JET-SET WILLY skrev i meddelelsen ...
>
>Kan filen ikke - på én eller anden måde - kopiere sig
>selv ind i RAM, for derefter at starte dette program
>(det i RAM-en), og afslutte sig selv (det på disken)?!

Jeg tror ikke det vil virke, men jeg vil da meget gerne se hvis
det gør

Her er i mellemtiden et lille trick da en bat fil jo godt kan slette
sig selv

Husk at bruge Ctrl+F9 (Compile) i stedet for F9 (Run)

program Project1;

{$APPTYPE CONSOLE}

uses
Windows,
SysUtils,
ShellApi;

var
S: String;
F: Textfile;

begin
S := ExtractFilePath(ParamStr(0)) + 'Sletter.bat' ;
Assign(F, S) ;
ReWrite(F) ;
Writeln(F, 'DEL "' + ParamStr(0) + '"') ;
Write(F, 'DEL "' + S + '"') ;
CloseFile(F);
ShellExecute(0, 'open', PChar(S), nil, nil, SW_HIDE);
end.

Med venlig hilsen
Steen




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

Månedens bedste
Årets bedste
Sidste års bedste