Autor Wątek: Problem z instalacją na Windows 7  (Przeczytany 5617 razy)

Offline TrumpeT

  • Użytkownik

# Wrzesień 07, 2010, 20:30:17
Witam,

Mam problem, ponieważ kiedy instaluję moją aplikację na Win7 (w standardowym katalogu c:\program files), moja aplikacja nie ma praw do tworzenia nowych plików i do zapisu w lokalnym katalogu, przez co nie może działać poprawnie. Instalacja na partycji D:\ nie powoduje tego problemu. Probowałem dwóch różnych instalatorów, ale bez pozytywnego rezultatu. Co ciekawe, jeśli w instalatorze zaznaczę opcję "uruchom program po zakończeniu instalacji" to te pierwsze uruchomienie działa prawidłowo (ma prawa do zapisu), ale kolejne już nie.
Co jeszcze ciekawsze, inne programy (nie mojego autorstwa) po instalacji do c:\program files zapisują normalnie pliki w lokalnym katalogu.

Dodam że problem był testowany na dwóch różnych komputerach z systemami Windows7(jeden professional drugi home) i na obu jest to samo.
Na innych systemach (XP) działa bez zarzutu.

Czy ktoś zna rozwiązanie problemu?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline ConayR

  • Użytkownik

# Wrzesień 07, 2010, 20:37:54
Napisz aplikację poprawnie i trzymaj pliki związane z użytkowaniem programu w katalogach związanych z użytkownikiem a nie w katalogu do którego prawa zapisu powinien mieć tylko grupy Administrators i Trusted Installers.

Offline TrumpeT

  • Użytkownik

# Wrzesień 07, 2010, 21:22:55
Mój program robi autoupdate, ściąga nową wersję programu (również exe) z netu. Także twoja rada mało pomocna...

Offline ConayR

  • Użytkownik

# Wrzesień 07, 2010, 21:30:11
W takiej sytuacji odpowiedni manifest dla programu aktualizacyjnego i proste ShellExecute:
http://msdn.microsoft.com/en-us/magazine/cc163486.aspx

Albo ShellExecuteEx z verb "runas":
http://blogs.msdn.com/b/vistacompatteam/archive/2006/09/25/771232.aspx

Offline TrumpeT

  • Użytkownik

# Wrzesień 07, 2010, 21:51:38
Mam zainstalowany inny program (nie mojego autorstwa) w c:\program files i tworzy on lokalnie nowe pliki z logami i nie ma problemu z ich zapisem. Jak to robic?

Offline ConayR

  • Użytkownik

# Wrzesień 07, 2010, 22:07:29
Jak to robic?
Nie robić tego. Jak zapytasz "jak się powiesić" też nie odpowiem, bo są rzeczy, których nie należy robić. To że ktoś inny popełnia błąd nie znaczy, że masz go powielać.

Offline TrumpeT

  • Użytkownik

# Wrzesień 07, 2010, 22:28:23
Dlaczego uważasz że to błąd? To najprostsze rozwiązanie i zawsze było ok.

Offline vashpan

  • Użytkownik
    • Strona

# Wrzesień 07, 2010, 22:39:20
Dlaczego uważasz że to błąd? To najprostsze rozwiązanie i zawsze było ok.

Nigdy nie bylo ok, w 'Program Files' powinny byc wylacznie pliki programu, biblioteki i jego niezmienialne dane. Wszystkie ustawienia i logi powinny isc do katalogu uzytkownika... Poczytaj o tym... To ze kiedys za czasow WinXP ( kiedy kazdy sobie bezkarnie dzialal na koncie admina ) tak bywalo i jeszcze wczesniej, nie znaczy ze to bylo poprawne... Windows bardzo cierpial z tej opieszalosci programistow i userow...

Offline ConayR

  • Użytkownik

# Wrzesień 07, 2010, 23:23:03
Dlaczego uważasz że to błąd? To najprostsze rozwiązanie i zawsze było ok.
Nie nie tylko uważam, że to błąd, wiem, że to błąd. Od czasów XP istniały wytyczne dla aplikacji. Wytyczne te były wymaganiami dla programów starających się o logo, a dla całej reszty informowały co w przyszłości będzie wymuszane na aplikacjach. Wśród tych wytycznych znajduje się proste rozgraniczenie między plikami aplikacji i plikami użytkownika. Logi, profile, save game'y,... to wszystko pliki użytkownika i mają trafić do jego katalogu. Robienie użytkownikowi bałaganu na dysku nigdy nie było ok i tym bardziej nie jest ok dzisiaj. Użyj poprawnie ShellExecute do aktualizacji programu (i bądź świadom, że to oznacza prompt LUA) i nie trzymaj danych w katalogu aplikacji.

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Wrzesień 08, 2010, 09:51:35
Tak przy okazji, ciekawi mnie, czy kiedy taki "poprawny" program jest deinstalowany, kasuje też swoje dane z "Danych Aplikacji" w katalogu każdego z użytkowników systemu? Czy zostawia tam swoje śmieci, które bez problemu by skasował gdyby je wszystkie trzymał we własnym katalogu w "Program Files"?!

Offline Liosan

  • Redaktor

# Wrzesień 08, 2010, 09:58:35
Robienie użytkownikowi bałaganu na dysku nigdy nie było ok i tym bardziej nie jest ok dzisiaj.
No właśnie, to dlaczego save'y lądują gdzie indziej niż gra? :P

Liosan

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Wrzesień 08, 2010, 10:04:46
Tak przy okazji, ciekawi mnie, czy kiedy taki "poprawny" program jest deinstalowany, kasuje też swoje dane z "Danych Aplikacji" w katalogu każdego z użytkowników systemu? Czy zostawia tam swoje śmieci, które bez problemu by skasował gdyby je wszystkie trzymał we własnym katalogu w "Program Files"?!
Według wytycznych MS:
1) program nie powinien kasować ustawień z Danych Aplikacji bez potwierdzenia użytkownika (czyli przy odinstalowywaniu dodatkowe pytanie/checkbox).
2) w środowisku domenowym Dane Aplikacji to folder przenośny, powinien więc być taki sam niezależnie od zainstalowanych na komputerze programów.
3) aplikacja jest ogólnosystemowa, Dane Aplikacji są per user. Zakładając jeden komputer z kilkoma kontami: jeden użytkownik, odinstalowując program, powinien wykasować dane wszystkim?

@Liosan: ponieważ save są danymi przypisanymi do użytkownika, a aplikacja - do systemu.

Jeszcze do tematu: ustawienie praw zapisu na Win7 nic nie da. W przypadku modyfikacji Program Files, gdy jest więcej niż jedno konto użytkownika, zmiany są zapisywane do podkatalogu w AppData i stamtąd czytane w pierwszej kolejności - oczywiście całość lokalnie dla użytkownika. Jedynym wyjściem poprawnego i bezpiecznego pisania po Program Files jest uruchomienie aplikacji spod konta TrustedInstaller (wymaga potwierdzenia UAC, automatyczne dla EXE z "Install", "Setup" i "Update") - a nikt nie lubi dawać aplikacji zbędnych praw admina ;)

Offline t4fun

  • Użytkownik

# Wrzesień 08, 2010, 10:17:14
Z tymi save tak ma być, mają zostać po deinstalacji. Np ktoś z domowników odinstaluje grę bez twojej wiedzy i co masz stracić savy? Albo chwilowo potrzebujesz trochę miejsca na dysku, odinstalowujesz grę, po pewnym czasie instalujesz są ponownie i savy masz. Jeżeli ci one przeszkadzają to je musisz sam świadomie usunąć

Offline Liosan

  • Redaktor

# Wrzesień 08, 2010, 10:30:23
@Liosan: ponieważ save są danymi przypisanymi do użytkownika, a aplikacja - do systemu.
E, szkoda Twojego czasu, tak tylko narzekam ;) Wiem jaka stoi za tym logika, po prostu mi się ona nie podoba... po co mi na domowym kompie to całe zamieszanie? Jakbym miał chociaż dwa konta to może by mi to coś dało, a tak to muszę w dziwnych miejscach szukać plików. Kiedyś do configu miałem dwa kliknięcia z pulpitu, a w dzisiejszych czasach ;)

Chociaż... poczekamy aż synek podrośnie, to może zmienię podejście...  ::)

Liosan

Offline vashpan

  • Użytkownik
    • Strona

# Wrzesień 08, 2010, 11:18:14
Chodzi o to ze mozna miec wiele kont, wiec aplikacje musza byc do tego dostosowane :) A to ze ludzie nie uzywaja udogdnien zwiazanych z wieloma kontami uzytkownikow to inna sprawa... ;) Windows NT od poczatku byl systemem wielouzytkownikowym, problem w tym ze aplikacje dzialajace glownie na gownianych Windowsach 9x o tym zapominaly i po nadejsciu XP zle nawyki pozostaly jeszcze przez dlugi czas, tym bardziej ze system specjalnie nie wymuszal tych zmian... Teraz to sie zmienia. Przyklad: Mafia 2 - nie ma w ogole osobnych sejwow czy profilow - sejwy sa "per user" w kategoriach systemowych... Tzn. jedno konto uzytkownika - jeden profil w grze.