Dynamiczna zmiana nazwy usługi

0

Tytuł wątku jest troche niefortunny, bo nie oddaje dokładnie o co mi chodzi. Już tłumaczę.

Stworzyłem system do replikacji danych (wybranych tabel z baz danych) i przesyłania ich do centrali. Układ składa się w tej chwili z 40 baz satelickich (będzie więcej) i jednej bazy centralnej. Na chwilę obecną nie ma możliwości pracy bezpośrednio na bazie centralnej (wystarczy, jeżeli powiem, ze mój system jest nakładką na system innej firmy).

Problem: Tworząc usługę w systemie - instalując ją, system rejestruje ją pod nazwą taką jak podałem w nazwie komponentu/klasy - propert Name.

instalując kolejną usługę spod tej samej nazwy (tego samego execa) - powoduję nadpisanie poprzedniej instancji tej usługi.

Nie pomaga zmiana zawartosci propertu Name - BeforeInstall na Name+coś - system i tak instaluje usługę pod nazwą Name.

Czy istnieje inny sposób na dynamiczną zmianę nazwy usługi przed zainstalowaniem - poza oczywiście zmiana Name przed kompilacją ?

Mam nadzieję, że dostatecznie jasno tlumaczę o co mi chodzi.

0

wg mnie należy usługę stworzyć dynamicznie a nie statycznie.
Każdy komponent jeśli ma deklarację biblioteki możesz tworzyć dynamicznie.
np.

procedure x;
Var
napisik:Tlabel;
begin
  napisik:=TLabel.create;
  napisik.top:=100
 itd
...
end;

Gorzej jeśli komponent lub funkcja z biblioteki dll nie daje takiej możliwości czyli zmiany jakiegoś parametru.
Jeśli masz kod to możesz go zmodyfikować i wsadzić do swojego projektu.

Ja tak często robię w delphi 4 który ma masę niedoróbek w stosunku do delphi 7 :-)

0
  DisplayName := 'Jakas';
  Name := 'Jaks2';
0

Kiedyś na gniazdkach pisałem coś w rodzaju GG ale bez serwera dla urzytkowników w firmie.
Wszyscy odpalali 1 exeka z 1 lokalizacji i na 4 pulpitach zdalnych miałem około 60 urzytkowników w całej Polsce.
Rozróżnienie każdego z nich to odczyt loginu i fulName i zapis parametrów w pliku.
Każdy projekt ma swoją specyfikę i czasem bardzo ciężko jest sprecyzować w czym problem.

Wg mnie musisz przyjżeć się mechanizmom i być może dopisać login urzytkownika w odpowiednim zdarzeniu.
Tu raczej nikt nie rozwiąże tego problemu może należy zmienić koncepcje :-) trudno powiedzieć

0
maciejmt napisał(a)
  DisplayName := 'Jakas';
  Name := 'Jaks2';

Tylko ze ja mam podobny system, oddzielne serwisy dla kazdej lokalizacji, i do kazdego dolaczam plik INI z ktorego serwis odczytuje parametry.
W OnCreateSerivce odczytuje nazwe i przypisuje.

Robiles to moze na gniazdkach, komunikacje z glownym systemem ?

maciejmt Możesz pokazać ten fragmencik kodu ? Ja trzymam cała konfigurację w plikach XML - wiec zasada działania bardzo podobna.

To znaczy - jeżeli moj obiekt nazywa się Service, to przy próbie wykonania Service.Name:='Service test' program wywala błąd już podczas kompilacji (Access Violation).

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