PSN jschut_82 | Xbox: JSchut82
In het register bij de runonce key een entry aanmaken met
code:
1
| 'del ' + application.exename; |
maar dan word ie niet direct verwijderd.
pas na het opstarten toch ?
kan het niet op een andere manier direct
pas na het opstarten toch ?
kan het niet op een andere manier direct
PSN jschut_82 | Xbox: JSchut82
Klopt inderdaad.Op donderdag 06 juni 2002 15:49 schreef JSchut het volgende:
maar dan word ie niet direct verwijderd.
pas na het opstarten toch ?
kan het niet op een andere manier direct
Daarvan schijnt deze erg goed te werken
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| procedure DeleteSelf;
var
module: HModule;
buf: array[0..MAX_PATH - 1] of char;
p: ULong;
hKrnl32: HModule;
pExitProcess,
pDeleteFile,
pFreeLibrary: pointer;
begin
module := GetModuleHandle(nil);
GetModuleFileName(module, buf, SizeOf(buf));
CloseHandle(THandle(4));
p := ULONG(module) + 1;
hKrnl32 := GetModuleHandle('kernel32');
pExitProcess := GetProcAddress(hKrnl32, 'ExitProcess');
pDeleteFile := GetProcAddress(hKrnl32, 'DeleteFileA');
pFreeLibrary := GetProcAddress(hKrnl32, 'FreeLibrary');
asm
lea eax, buf
push 0
push 0
push eax
push pExitProcess
push p
push pDeleteFile
push pFreeLibrary
ret
end;
end; |
http://groups.google.com/groups?q=%22procedure+deleteSelf%22&hl=nl&lr=&selm=3CD4F75C.3AC8C42D%40ngs.ru&rnum=1
Hier staat een ton aan oplossingen
bedankt dit werkt idd
alleen nu nog een probleem wat er op volgt
normaal gesproken delete ik in delphi ook de directory maar dat kan nu dus niet meer
kan je dat ook niet inbouwen in die bat file
ik heb het al geprobeerd maar dit
werkt niet
ik heb trouwens het volgende gebruikt
alleen nu nog een probleem wat er op volgt
normaal gesproken delete ik in delphi ook de directory maar dat kan nu dus niet meer
kan je dat ook niet inbouwen in die bat file
ik heb het al geprobeerd maar dit
code:
1
| writeln(f,format('Erase "prog dir"',[paramstr(0)])); |
werkt niet
ik heb trouwens het volgende gebruikt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Procedure DelExe;
Var f: TextFile;
begin
assignfile(f,changefileext(paramstr(0),'.bat'));
rewrite(f);
writeln(f,':1');
writeln(f,format('Erase "%s"',[paramstr(0)]));
writeln(f,format('If exist "%s" Goto 1',[paramstr(0)]));
writeln(f,format('Erase
"%s"',[changefileext(paramstr(0),'.bat')]));
closefile(f);
winexec(PChar(changefileext(paramstr(0),'.bat')),sw_hide);
halt;
end; |
PSN jschut_82 | Xbox: JSchut82
Als je er eerst voor zorgt dat de directory die je wilt legen ook echt leeg is (dus ook alle subdirectories zijn leeg) kun je gewoon
Ik geloof dat je met /Y geen verdere bevestiging hoeft te geven...
Als dit op sommige systemen niet werkt... en dat kan best zal je in een temp dir een bestandje moeten aanmaken dat hetzelfde doet en die vervolgens weer door je batch file laten verwijderen... Zorg er echt voor dat die batchfile en deltree bestandje niet in je uninstall directory staan maar in de temp directory!!
code:
1
| deltree %directorynaam% |
Ik geloof dat je met /Y geen verdere bevestiging hoeft te geven...
Als dit op sommige systemen niet werkt... en dat kan best zal je in een temp dir een bestandje moeten aanmaken dat hetzelfde doet en die vervolgens weer door je batch file laten verwijderen... Zorg er echt voor dat die batchfile en deltree bestandje niet in je uninstall directory staan maar in de temp directory!!
Pagina: 1