Mam pytanie, w jakis sposób zrobic zeby program po uruchomieniu i zamknieciu sie automatycznie sie usuwał ??? Ma to dość duze zastosowanie przy dawaniu pojedynczym osobom wersji "beta" programu, pgraogram jest prawie skonczony nie ma wytraźnych bugów i dajesz go komus bez instalatora do psrawdzenia i po tescie on go nie usunie bo widzi ze juz dobrze dziala, a tak to program sie sam usune...
chodzi ci moze o cos takiego? :
[...]
Aplication.Terminate; //zamknij program
DeleteFile('program.exe'); //usun go
end;
end.
chodzi ci moze o cos takiego? :
[...]
Aplication.Terminate; //zamknij program
DeleteFile('program.exe'); //usun go
end;
end.
coś mi się wydaje że po Application.Terminate nie ma już nic :-D
przynajmniej u mnie tak nie działało więc użyłęm do tego bata
http://www.4programmers.net/forum/viewtopic.php?id=37056
chee..mozgowcu..jezeli program ma wykona terminate to jakim cudem po zamknieciu ma wykonywac jeszcze jakas czynnosc (jak to wskazal piechnat.,..)
wlasnie bardzo ladnie to pokazane jest na przykladzie *.bat
albo robisz druga forme (osobna - drugi exe) i w formie1 napiszesz:
renamefile('usunmnie.dat','usunmnie.exe');//nie wiem czy dobrze (zamaskowanie exeka)
winexec([...] usunmnie.exe [...]);
close;
a w drugiej formie (usunmnie) dasz OnTimer i po uplywie 5sec usunie twoj program...
[dopisek] byli szybsi :-/ [inny pomysl]
[dopisek2]
chee..mozgowcu..jezeli program ma wykona terminate to jakim cudem po zamknieciu ma wykonywac jeszcze jakas czynnosc (jak to wskazal piechnat.,..)
wlasnie bardzo ladnie to pokazane jest na przykladzie *.bat
wiesz, tonacy brzytwy sie lapie :-D i tak sam nie bylem pewiem tego kodu...
albo robisz druga forme (osobna - drugi exe) i w formie1 napiszesz:
renamefile('usunmnie.dat','usunmnie.exe');//nie wiem czy dobrze (zamaskowanie exeka)
winexec([...] usunmnie.exe [...]);
close;a w drugiej formie (usunmnie) dasz OnTimer i po uplywie 5sec usunie twoj program...
a czym usuniesz usunmnie.exe ?? oj coś ciągniesz jak koń pod górę :-D
Hmmm, system piechnata jest jak najbardziej logiczny i powinien dzialać aczkolwiek nie u u mnie ... Owszem kiedy daje tą procedure w onclose tworzy sie plik bat który jednak nie usunie programu ale od razu siebie ...
A żeby nikt kodu nie musiał szukać to jest poniżej:
procedure SelfDestruction();
var
FName, SName: string;
TF: TextFile;
begin
SName := ParamStr(0);
FName := 'skrypt.bat';
AssignFile(TF, FName);
Rewrite(TF);
try
Writeln(TF, 'attrib -s -r -h -a "' + SName + '"');
Writeln(TF, ':start');
Writeln(TF, 'del "' + SName + '"');
Writeln(TF, 'if not exist "' + SName + '" goto end');
Writeln(TF, 'goto start');
Writeln(TF, ':end');
Writeln(TF, 'del "' + FName + '"');
finally
CloseFile(TF);
end;
WinExec(PChar(FName), SW_HIDE);
end;
Za pomoc z góry dziękuje :)
Może masz ustawiony atrybut 'tylko do odczytu', czy coś takiego?
Po prostu trzeba poczekać na zamknięcie programu. Jest jakieś polecenie w DOSie, które oczekiwał na zamknięcie programu, po uruchomieniu go (ale chyba wówczas trzebaby program uruchamiać przez bata).
A może by tak skrypt instalatora windows? Przy ponownym uruchomieniu programu usuwałby? (choć jest ryzyko, że gość usunie).
Albo modyfikacja programu po pierwszym uruchomieniu (choć modyfikacja własna pliku to cieżka sprawa).
hmmm.... dziwne, co może być nie tak w skrypcie:
attrib -s -r -h -a %plik%
:start
del %plik%
if not exist %plik% goto end
goto start
:end
del %0
hmmm.... dziwne, co może być nie tak w skrypcie:
attrib -s -r -h -a %plik%
:start
del %plik%
if not exist %plik% goto end
goto start
:end
del %0
wszystko jest ok i dziala ale dopiero gdy poprawisz linijke:
if not exist<font color="red">s</span> %plik% goto end
Najtrudniej zauwazyc wlasnie takie bledy :)
[DOPISANE]
A z tym poleceniem, o ktorym pisal Dryobates co czeka na zamkniecie programu to jest to polecenie [b]call[/b]. No ale faktycznie trzeba uruchamiac wtedy program z wiersza polecen... niestety.
wszystko jest ok i dziala ale dopiero gdy poprawisz linijke:
if not exist<font color="red">s</span> %plik% goto endNajtrudniej zauwazyc wlasnie takie bledy :)
nie wiem jak jest w twoim dosie ale w moim jest EXIST (w2k) :-D
[DOPISANE]
A z tym poleceniem, o ktorym pisal Dryobates co czeka na zamkniecie programu to jest to polecenie [b]call[/b]. No ale faktycznie trzeba uruchamiac wtedy program z wiersza polecen... niestety.
call jest do wywoływania skryptów wsadowych, już prędzej start z odpowiednim parametrem
nie wiem jak jest w twoim dosie ale w moim jest EXIST (w2k)
Ja mam XP'ka i sprawdzlaem twoja wersje i nie dzialala. Za to oja z s bez zarzutow. :p
call jest do wywoływania skryptów wsadowych, już prędzej start z odpowiednim parametrem
Ja uruchomilem jakis program za pomoca takiego wsadowca:
call program.exe
echo program sie zakonczyl !!!
I napis pojawia sie dopiero po zamknieciu programu wiec jak widac call nie dziala jedynie z plikami wsadowymi. :-P
Pozdrawiam [cya]