[Delphi] -Dodanie kodu do programu, on/ off programu i kopii

0

Kontynuacja merytoryczna tematu z http://4programmers.net/Forum/530010#id530010

Jak mając napisany Delphi 2007 (żeby nie zaciemniać obrazu):
Program_Zrodlowy.exe i Program_Uaktualniajacy.exe
zrobić żeby

3.a) Program_Zrodlowy.exe uruchomił Program_Uaktualniajacy.exe;

3.b) Program_Uaktualniajacy.exe skopiował Program_Zrodlowy.exe i dodał funkcję w module Unit2,
aby była dostępna również z Unit1 Program_Zrodlowy.exe-ka; jakby też można było dodać cały
moduł Unit3 z procedurami.
To dodawanie tak bezpośrednio do execa ale i może byc przez "zdalną" kompilację.

3.c) Program_Uaktualniajacy.exe uruchamia kopie do Program_Zrodlowy_1.exe.

3.d) Program_Uaktualniajacy.exe przekazuje info do Program_Zrodlowy.exe aby się zamknął
i go kasuje a sam się zamyka i ewentualnie kasuje.

3.e) Program_Zrodlowy_1.exe wydaje polecenie aby Program_Uaktualniajacy.exe się zamknął
i go kasuje.

P.S. Chciałem doprowadzić do tego, żeby Program_Zrodlowy.exe sam się uaktualniał przez przygotowane przez siebie uaktualnienie bez ingerencji użytkownika dlatego na forum równolegle zamieściłem inną część tego tematu.
Prędzej czy później temat rozgryzę ale wolałbym prędzej ;)

Pytam o jakiś nawet najprostszy przyczółek, a potem się zobaczy każde info czy link na wagę.. wiedzy :)

0

Pfff...
Wyślij klientowi kompilator i źródło i skompiluj....
Wiesz w ogóle czym się różni kod źródłowy od binarki ( plik .exe, choć w win32 jest to obraz pliku wykonywalnego w któym kod potrafi być mniejszością =] ) ?

0

Z grubsza wiem..
Wiem też że są programy które są odwrotnością kompilatora. A skoro ktoś takie cacka napisał więc ...
Jak bedę musiał to zejdę do poziomu Win_API albo asemblera ale czasami ludzie znają różne sztuczki więc może przypadkiem ... :) nie bedę musiał wyważać otwartych drzwi.

0

=|
Nie chcę Cię obrazić czy coś w tym stylu ale mi to zalatuje całkowitym bezsensem, żeby takie coś robić musiałbyś mieć kompilator i dekompilator/źródło na miejscu. Czy nie prościej wysłać klientowi nowego exe'ka?

0

Spoko. Jako pierwszą wersję można by sobie na razie odpuścić.

Przesyłania uaktualnienia chciałbym uniknąć, ponieważ w grę wchodzą duże pliki, ale... ale... program uaktualniający może mieć informacje które fragmenty starego pliku wynikowego usunąć lub zmienić i gdzie wstawić nowe... a to już jakiś procent KB zaoszczędzone tym bardziej że aplikacja ma się ciągle rozwijać.

Jednak w takim układzie zapraszam do tematu http://4programmers.net/Forum/530010#id530010

Chodzi mi o to aby exe-k w taki czy inny sposób sam się rozbudowywał (siebie lub swoje DLL i inne pliki)

0

Wiesz że w .NET da się w dowolnym momencie wstawić dowolny kod w dowolne miejsce ? =]
Kompilator jest razem z frameworkiem dostarczony i potem tylko się robiło drobny hokus pokus i kod się wykonywał, zgubiłem link do przykładu ( a był bardzo krótki jak na takie coś ) ale powinno się dość łatwo znaleźć.

0

Dziwny wątek. Nie spotkałem się z taką realizacją aktualizacji w praktyce. Najlepiej użyć bibliotek dll, jak podzielisz funkcjonalności na biblioteki - to wystarczy podmienić jedną odpowiedzialna za daną funckję. Exe to tylko szkielet, cała merytoryka siedzi w dll'ach. Co do dużego exe'ka - asp, upx ...

0

Umieść w bibliotece dll funkcje zwracającą ilość funkcji w danej bibliotece w ten sposób będziesz miał kompatybilność wsteczną. Starszą wersją powinno się dać uruchamiać nowsze dll'ki Na forum i na głownej znajdziesz w jaki sposób uruchamiać dynamicznie funkcje i procedury w dll'ach. Innne "nadpisywania" są bezsensowne, Bobik podszedł dobrze do tego tematu.

0

Dla mnie też brzmi to logicznie, ale na którymś etapie może być to za mało, może to jakoś ominę ;)
A wie Ktoś coś na temat http://4programmers.net/Forum/viewtopic.php?id=141337
?

0
Integers napisał(a)

Przesyłania uaktualnienia chciałbym uniknąć, ponieważ w grę wchodzą duże pliki, ale... ale... program uaktualniający może mieć informacje które fragmenty starego pliku wynikowego usunąć lub zmienić i gdzie wstawić nowe

Ale... ale... slyszales moze o czyms takim jak DIFF oraz patche roznicowe?

Moze tez nie do konca zdajesz sobie sprawe z tego, jakiej jakosci i zawartosci kod daje dekompilacja. Moja rada: napisz w Delphi prosty program, skompiluj, zdekompiluj, dodaj funkcjonalnosc (recznie) i skompiluj ponownie. Zastanow sie, ile pracy Cie to kosztowalo i w jakim (jak malym) stopniu mozesz to zautomatyzowac? ... i czy w ogole warto do klienta dostarczac cos innego niz pliki binarne.

A jak chcesz miec jeszcze wiekszy wplyw na dynamike budowy aplikacji podczas wykonania, zmien jezyk programowania (czy na .NET czy na Java, zaleznie od Twoich preferencji). Architektura takich programow (w tym w postaci binarnej) jest odmienna i pozwala na wieksza swobode.

0

Stworz sobie jakis prosty patcher, a pobieraj tylko plik w ktorym bedziesz mial zapisane co i gdzie spatchowac..
No i funkcje trzymaj w dll'kach np. a do rozszerzania mozliwosci to stworz sobie system pluginow..

0

Dzięki Wszystkim za podpowiedzi.

Chociaż inaczej to sobie wyobrażałem, ale w gruncie rzeczy efekt jest taki sam :).
Do czytam jeszcze o pluginach.. z przeszłości wiem że bibloteki nie zawsze były elastyczne ale na początek... a może mi po prostu nie wszystko wychodziło..

Jeszcze raz dzieki

1 użytkowników online, w tym zalogowanych: 0, gości: 1