Zapisywanie ustawień programu, który nie jest instalowany

0

Cześć !

Posiadam mały program do komunikacji w którym muszę dodać zapamiętywanie dosłownie 2 parametrów.
Jednym z nich jest język a drugim port COM, który był wykorzystywany ostatnim razem.

Myślałem, o pliku .txt i po pierwszych próbach działało to poprawnie. Problem jest w tym, że do tej pory program był uruchamiany z jednego pliku bez potrzeby instalacji.
Chciałem zapytać czy istnieje takie rozwiązanie aby te 2 parametry były zapamiętywane w programie a program danej był w jednym pliku bez potrzeby instalacji i można go było uruchomić nawet z pendriva.

0

Najprościej sobie zrobić w programie String czy tablice znaków o długości powiedzmy tam 255 znaków i przy wyłączaniu programu ten do siebie zapisuje te konfiguracje tzn szuka sobie ciągu zaczynającego się na @dupa#costam1@ i za tym nadpisać twoje konfiguracje warunek to nadpisanie i nie przekraczanie 255-ciąg_początkowy. Jak się uruchamia to szuka naszego ciągu i zaczytuje sobie dane. To taka najprostsza łopatologiczna metoda.

0

A co myślicie u użyciu np. tego ?

Properties.Settings.Default.Setting = "a";
Properties.Settings.Default.Save();

Zrobiłem to tak jak wyżej i działa bez zastrzeżeń. Czy są może jakieś przeciwwskazania co do używania takiej metody ?

1
adam_c napisał(a):

Zrobiłem to tak jak wyżej i działa bez zastrzeżeń. Czy są może jakieś przeciwwskazania co do używania takiej metody ?

Te dane są zapisywane w pliku w katalogu %APPDATA% (C:\Users<user>\AppData\Roaming albo Local). Nadal nie zapewnia ci to jednoplikowości tak naprawdę, ale jest jedną z najbardziej sensownych opcji.

Najprościej sobie zrobić w programie String czy tablice znaków o długości powiedzmy tam 255 znaków i przy wyłączaniu programu ten do siebie zapisuje te konfiguracje tzn szuka sobie ciągu zaczynającego się na @dupa#costam1@ i za tym nadpisać twoje konfiguracje warunek to nadpisanie i nie przekraczanie 255-ciąg_początkowy. Jak się uruchamia to szuka naszego ciągu i zaczytuje sobie dane. To taka najprostsza łopatologiczna metoda.

Jesteś pewien, że w C# to jest wykonalne? Dodatkowo, to zepsułoby podpis cyfrowy, jeżeli aplikacja taki posiada. Nie wiem czy nazwać to najprostszą, łopatologiczną metodą, dla mnie to brzydki hack trochę ;-)

0

Jeśli chodzi o język aplikacji to polecam ten krótki artykuł, jeden parametr mniej.

0
adam_c napisał(a)

Myślałem, o pliku .txt i po pierwszych próbach działało to poprawnie. Problem jest w tym, że do tej pory program był uruchamiany z jednego pliku bez potrzeby instalacji.

Nie wiem czy wiesz, ale dowolny (własny) program może być uruchamiany bez instalacji, nawet jeśli składa się z tysięcy plików, oprócz pliku wykonywalnego;

Te informacje (ustawienia) gdzieś i tak musisz zapisać, bo pliku wykonywalnego nie zaktualizujesz podczas działania programu (a jeśli istnieje taka możliwość, to na pewno nie jest to takie proste); Skoro więc i tak musisz trzymać te dane w osobnym pliku, to trzymaj je zaraz obok pliku wykonywalnego - np. w pliku Ini; Jeśli tego pliku braknie, to zawsze można go utworzyć i wpisać ustawienia domyślne, na które program odpowiednio zareaguje;

Chyba że zapisywane ustawienia są unikalne dla każdej maszyny (czyli na różnych komputerach wartości tych dwóch parametrów mogą być różne), to wtedy lepiej będzie je trzymać w komputerze użytkownika, niż na pendrive.

0

Metoda o której wypominałem wcześniej działa prawidłowo. Nawet gdy skopiuje plik .exe do innego innego komputera i uruchomię to ustawienia są ładnie zapisywane i zapamiętywane.

Mam jednak pytanie jak zrobić aby po kompilacji program wracał do ustawień default-owych. Chodzi o to, że ja pracuje na języku polskim i gdy wyślę program .exe do kogoś to program uruchomi się z językiem polskim a powinien z angielskim.

0

Zapisuj informacje w komputerze ofiary - dzięki temu po podłączeniu ząbka do innego komputera, ustawień nie będzie, program nie będzie miał skąd ich odczytać i skorzysta z ustawień domyślnych; Podczas wyłaczania się programu, ustawienia wtedy zapisujesz w komputerze i po ponownym uruchomieniu aplikacji ustawienia będą już mogły zostać odczytane;

Gdybyś korzystał z pliku umieszczonego obok pliku wykonywalnego, to zapamiętane ustawienia były by wczytane bez względu na maszynę, a jak widzę nie o to Ci chodzi, więc ten sposób odpada; Wyżej napisałem jak ja to widzę - to raczej normalne, że aby ustawienia na każdej maszynie były zapamiętywane z osobna, to trzeba je na tych maszynach zapisywać.

0

Plik konfiguracyjny powinien być zapisywany w profilu użytkownika, nie w katalogu z aplikacją (do którego możesz nie mieć praw do zapisu).
Przy braku pliku po prostu weź ustawienia domyślne - tak by obecnośc konfiga nie była koniecznością.

Jak to są tylko dwa ustawienia to możesz też trzymać to w odpowiednim miejscu w systemowym rejestrze.

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