|
| 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 |
| | |
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
| |
|
|