Warsztat.GD

Programowanie => Platformy => Windows => Wątek zaczęty przez: TrumpeT w Wrzesień 07, 2010, 20:30:17

Tytuł: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w 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?
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w 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.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w 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...
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w 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
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w 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?
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w 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ć.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w Wrzesień 07, 2010, 22:28:23
Dlaczego uważasz że to błąd? To najprostsze rozwiązanie i zawsze było ok.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: vashpan w 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...
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w 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.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Reg w 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"?!
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Liosan w 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
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Asmodeusz w 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 ;)
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: t4fun w 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ąć
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Liosan w 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
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: vashpan w 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.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Kos w Wrzesień 08, 2010, 12:00:26
@up - czyli jeśli rodzina ma jedno konto w systemie (bo po co komplikować), to musi specjalnie zmieniać nawyki, by pograć w Mafię, tak? :)
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Groshu w Wrzesień 08, 2010, 12:21:49
@up - czyli jeśli rodzina ma jedno konto w systemie (bo po co komplikować), to musi specjalnie zmieniać nawyki, by pograć w Mafię, tak? :)
Każdy narzeka, ze Windows'owi brakuje Linux'owskeigo porządku, a jak w końcu trochę tego porządku przybędzie to też jest źle ;D
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: t4fun w Wrzesień 08, 2010, 12:33:40
W sumie to Windows powoli zmierza z tymi prawami w kierunku systemów Uniksowych. W Windows 7 w końcu katalog katalog użytkowników nazywa się krótko i zwięźle "Users" a nie "Documents and Settings". Ciekawe czy w następnych wersjach pojawi się coś na wzór uniksowego /var, czyli miejsca gdzie aplikacje a raczej usługi mogą zapisywać jakieś dane które nie są związane z konkretnym użytkownikiem komputera. Takie są na przykład logi.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: vashpan w Wrzesień 08, 2010, 12:37:42
@up - czyli jeśli rodzina ma jedno konto w systemie (bo po co komplikować), to musi specjalnie zmieniać nawyki, by pograć w Mafię, tak? :)

Pytanie po co komplikowac z jednym kontem w rodzinie... Z wieloma kontami kazdy by byl zadowolony ;) Synek - ze mama nie zajrzy w jego wstydliwa historie w FF, albo sie nie zdziwi zaczynajac wpisywac w pasek adresu "pomadki", nie trzeba tez kombinowac z jakimis profilami uzytkownikow np. na gg, mozna zapamietywac hasla w programach, bo w rodzinie jedno na profil powinno wystarczyc, mozna grac w Mafie 2 ;) i miec swoja tapete, swoje ikony, swoj porzadek ;) Uprawnienia administratora moga miec tylko zaawansowani uzytkownicy przez co mama szukajaca plotek, albo glupi synek z zamilowaniami do rozowych stron nie poinstaluja wirusow - w zw. z czym -> papa niepotrzebne antywirusy...

Poczatkowo u mnie w rodzinie bylo marudzenie, ale teraz nikt nie ma zamiaru dzielic sie swoim kontem :D Kiedys to byla rzeczywiscie meka, ale z nadejsciem Win7, nowszymi aplikacjami ktore jednak sie stosuja juz do wytycznych - teraz to wreszcie ma jakies rece i nogi. Cos, co dla uzytkownikow systemow Unikosowych bylo oczywiste 40 lat temu...
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Liosan w Wrzesień 08, 2010, 12:53:25
@vashpan - nic z tego co wymieniłeś nie uważam za fajne :) A tak z ciekawości, jak to u Was wygląda - każdy wciska windows+L albo logout zanim wstanie z krzesła?

Liosan
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: t4fun w Wrzesień 08, 2010, 13:23:30
W domu nie, w pracy tak.
Ale inni domownicy sami się przełączają na swój profil, no chyba że chce tylko na chwile coś w necie zobaczyć to nie ma takiej potrzeby.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Dab w Wrzesień 08, 2010, 13:34:07
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

Jeżeli aplikacja instaluje się do Program Files to jest duże/mniejsze prawdopodobieństwo, że wpięła się też:
1. do rejestru
2. do zainstalowanych aplikacji (w sumie to subset 1.)
3. do /Windows/ (np. deinstalator)
4. do AppData
5. do menu start/quicklaunch/pulpitu

W tej sytuacji to że ma jeszcze save w AppData lub Moich Dokumentach to naprawdę pikuś. Jak ci się to nie podoba to zawsze możesz aplikację dostarczyć jako ZIP i niech wtedy pracuje (po rozpakowaniu) w swoim katalogu -- to też ma sens.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Kos w Wrzesień 08, 2010, 14:43:00
W tej sytuacji to że ma jeszcze save w AppData lub Moich Dokumentach to naprawdę pikuś. Jak ci się to nie podoba to zawsze możesz aplikację dostarczyć jako ZIP i niech wtedy pracuje (po rozpakowaniu) w swoim katalogu -- to też ma sens.

A ja lubię, jak instalator pyta przy instalce, czy trzymać ustawienia w folderze danego użytkownika, czy w swoim własnym ("portable install") - foobar2000 na przykład tak robi.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Dab w Wrzesień 08, 2010, 14:46:01
Bez sensu, jeżeli to ma być "portable install" to po co w ogóle instalator?
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Liosan w Wrzesień 08, 2010, 14:59:26
Oj tam, chce Wam się o tym gadać? To kwestia gustu. Mi trzymanie czegokolwiek w Moich Dokumentach mocno nie lezy, reszcie świata pewnie leży. I co? I nic, pewnie będę się musiał przyzwyczaić. Nie znaczy, że będę musiał być z tego zadowolony :)

Liosan
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: vashpan w Wrzesień 08, 2010, 15:25:13
Oj tam, chce Wam się o tym gadać? To kwestia gustu. Mi trzymanie czegokolwiek w Moich Dokumentach mocno nie lezy, reszcie świata pewnie leży. I co? I nic, pewnie będę się musiał przyzwyczaić. Nie znaczy, że będę musiał być z tego zadowolony :)

Liosan

Porzadna aplikacja ustawien nie trzyma w Moich Dokumentach, od tego jest katalog AppData... ;) Szkoda ze cala masa gier tak robi...

@vashpan - nic z tego co wymieniłeś nie uważam za fajne :) A tak z ciekawości, jak to u Was wygląda - każdy wciska windows+L albo logout zanim wstanie z krzesła?

Liosan

Mniej wiecej tak, a jaki to problem ? Nie logout a Win+L ( ew. Przelacz uzytkownika jak ktos nie zna skrotu ;) ) Na pewno nie mam zamiaru by mlodszy brat dorwal sie do mojego gg, a juz tym bardziej po kazdy wstaniu od kompa nie mam zamiaru tego gg wylaczac :)

No to widac inaczej z komputerow korzystamy ;) Naprawde nie widzisz plusow w tym ze twoj mlodszy brat/dziecko nie musi widziec na pulpicie/pasku zadan gazylionow skrotow do Visualow, Eclipsow, NetBeansow ( albo niedaj boze je odpalac... ) ? Nie musi nawet wiedziec ze cos takiego istnieje na dysku... Twoja zona nie musi wiedziec jakie profile jej kolezanek przegladales na nk albo facebooku...  Tego ze mozesz miec tylko wlasne zakladki w przegladarce (!) ? ;)

Ja tam nie rozumiem przywiazania ludzi do zlych rozwiazan, do ktorych po prostu sie przyzwyczaili... Trzeba o tym pamietac tworzac kolejny "innowacyjny" soft ;)
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Kos w Wrzesień 08, 2010, 20:11:45
Bez sensu, jeżeli to ma być "portable install" to po co w ogóle instalator?
Robi Ci jakąkolwiek różnicę, czy wybierasz rodzaj instalacji na stronie z downloadem, czy na jednym z ekranów instalatora? Jedno i to samo... no dobra, drugie marginalnie wygodniejsze, jak dla mnie :).

A instalator np. po to, byś zaakceptował licencję :D.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Xirdus w Wrzesień 08, 2010, 20:59:24
A instalator np. po to, byś zaakceptował licencję :D.
Jak ściągam Chrome'a to akceptuję licencję przed downloadem.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w Wrzesień 09, 2010, 03:33:43
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"?!
Zalecane jest danie wyboru użytkownikowi w momencie deinstalacji, czy chce je zostawić, czy też nie. Robiło tak np. Tiberian Twilight ze stanami gry. To też odpowiada na pytanie Liosana.
No właśnie, to dlaczego save'y lądują gdzie indziej niż gra? :P
Właśnie po to, żebyś mógł odinstalować grę i wciąż mieć sejwy tak zachowane, żeby przy ponownej instalacji (bez względu na wybrany katalog) były dostępne. Albo żeby sequel gry wiedział gdzie szukać sejwów z pierwszej części do importu postaci.

1. do rejestru
No i? Od tego ma klucz HKLM/Software/[nazwa firmy]/[nazwa aplikacji], żeby go używać. Rozumiem, że masa ~plików to lepsze rozwiązanie? ;]

Cytuj
2. do zainstalowanych aplikacji (w sumie to subset 1.)
No i? Po to jest mechanizm odinstalowywania programów, żeby z jednego miejsca (panelu sterowania) zarządzać aplikacjami. Do tego celu potrzebny jest jeden wpis w HKLM/Software/Microsoft/CurrentVersion/Uninstall

Cytuj
3. do /Windows/ (np. deinstalator)
Bzdura. Jeśli ktoś coś takiego robi to robi coś złego.

Cytuj
4. do AppData
Od tego jest, żeby trzymać w nim dane.

Cytuj
5. do menu start/quicklaunch/pulpitu
Normalne/nie zalecane od Win7/nie zalecane.

Cytuj
W tej sytuacji to że ma jeszcze save w AppData lub Moich Dokumentach to naprawdę pikuś. Jak ci się to nie podoba to zawsze możesz aplikację dostarczyć jako ZIP i niech wtedy pracuje (po rozpakowaniu) w swoim katalogu -- to też ma sens.
Pod warunkiem, że użytkownik wie co robi. A to najczęściej błędne założenie. Poza tym wolałbym, żeby program był w katalogu bez praw zapisu (co nie będzie spełnione przy ręcznej instalacji z ZIP w większości przypadków) i by malware wszelkiej maści nie grzebał w programie. Ale rozumiem, że Twój kod jest cudowny i nie ma mowy by go exploitować. :)
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Dab w Wrzesień 09, 2010, 11:40:18
1. do rejestru
No i? Od tego ma klucz HKLM/Software/[nazwa firmy]/[nazwa aplikacji], żeby go używać. Rozumiem, że masa ~plików to lepsze rozwiązanie? ;]

Cytuj
2. do zainstalowanych aplikacji (w sumie to subset 1.)
No i? Po to jest mechanizm odinstalowywania programów, żeby z jednego miejsca (panelu sterowania) zarządzać aplikacjami. Do tego celu potrzebny jest jeden wpis w HKLM/Software/Microsoft/CurrentVersion/Uninstall

Cytuj
3. do /Windows/ (np. deinstalator)
Bzdura. Jeśli ktoś coś takiego robi to robi coś złego.

Cytuj
4. do AppData
Od tego jest, żeby trzymać w nim dane.

Cytuj
5. do menu start/quicklaunch/pulpitu
Normalne/nie zalecane od Win7/nie zalecane.

Czytaj ze zrozumieniem -- ja nie mówię że zapisywanie plików do powyższych katalogów jest złe. Twierdzę tylko, że jeżeli instalator śmieci w tamtych miejscach, to sejwy w Moich Dokumentach niewiele zmieniają.
Aczkolwiek co do #1 to tak -- rozproszone pliki konfiguracyjne to _jest_ dużo lepsze rozwiązanie od centralnego rejestru :)

Cytuj
Cytuj
W tej sytuacji to że ma jeszcze save w AppData lub Moich Dokumentach to naprawdę pikuś. Jak ci się to nie podoba to zawsze możesz aplikację dostarczyć jako ZIP i niech wtedy pracuje (po rozpakowaniu) w swoim katalogu -- to też ma sens.
Pod warunkiem, że użytkownik wie co robi. A to najczęściej błędne założenie. Poza tym wolałbym, żeby program był w katalogu bez praw zapisu (co nie będzie spełnione przy ręcznej instalacji z ZIP w większości przypadków) i by malware wszelkiej maści nie grzebał w programie. Ale rozumiem, że Twój kod jest cudowny i nie ma mowy by go exploitować. :)

No i znowu. To co proponujesz to cudowny samochód odporny na zderzenia z chilijskimi krowami. To że większość wypadków ma miejsce z udziałem innych zwierząt i samochodów, w dodatku najczęściej z innych stron świata już cię niewiele obchodzi.
Malware sobie znakomicie poradzi z zapisem do Program Files. Nawet gdyby musiało (ale ofc nie musi) pokazać użytkownikowi ekran UAC -- użytkownicy klikają w niego bez zastanowienia. Zresztą, jak mają nie klikać bez zastanowienia, skoro MS w całej swojej mądrości nie umieścił na tym ekranie informacji czemu właściwie ten ekran się pokazuje :D
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Kos w Wrzesień 09, 2010, 13:27:07
Twierdzę tylko, że jeżeli instalator śmieci w tamtych miejscach, to sejwy w Moich Dokumentach niewiele zmieniają.

Instalatory nie śmiecą w tamtych miejscach, tylko z nich korzystają zgodnie z konwencjami systemu.
Moje Dokumenty są miejscem na dokumenty, a nie na sejwy czy inne dane aplikacji. Od sejwów jest AppData.

Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Dab w Wrzesień 09, 2010, 13:34:16
Pudło. Od Visty w górę poprawnym miejscem na sejwy jest My Documents\My Games.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Kos w Wrzesień 09, 2010, 13:35:09
Pudło. Od Visty w górę poprawnym miejscem na sejwy jest My Documents\My Games.
Tak? Bez sensu ;d
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w Wrzesień 10, 2010, 02:33:07
Czytaj ze zrozumieniem -- ja nie mówię że zapisywanie plików do powyższych katalogów jest złe. Twierdzę tylko, że jeżeli instalator śmieci w tamtych miejscach, to sejwy w Moich Dokumentach niewiele zmieniają.
Aczkolwiek co do #1 to tak -- rozproszone pliki konfiguracyjne to _jest_ dużo lepsze rozwiązanie od centralnego rejestru :)
Pisałeś z przekąsem, ciężko było Twoją wypowiedź inaczej traktować. I nie, porozrzucane pliki nie są lepsze od centralnego miejsca. Przy okazji: danymi umieszczanymi w przeznaczonych do tego celu miejscach się nie śmieci. To co piszesz jest absolutnie nielogiczne.

Cytuj
No i znowu. To co proponujesz to cudowny samochód odporny na zderzenia z chilijskimi krowami. To że większość wypadków ma miejsce z udziałem innych zwierząt i samochodów, w dodatku najczęściej z innych stron świata już cię niewiele obchodzi.
Malware sobie znakomicie poradzi z zapisem do Program Files. Nawet gdyby musiało (ale ofc nie musi) pokazać użytkownikowi ekran UAC -- użytkownicy klikają w niego bez zastanowienia. Zresztą, jak mają nie klikać bez zastanowienia, skoro MS w całej swojej mądrości nie umieścił na tym ekranie informacji czemu właściwie ten ekran się pokazuje :D
Nie kwestionuję tego, że UAC wychodzi z błędnego założenia, że user wie w co kliknąć. Ale UAC jak i każde inne zabezpieczenie nie jest teh ultimate solution a sposobem na obronienie jeszcze kilku osób przed zrobieniem sobie ziaziu. Informacja "dlaczego pojawia się ekran" musi być dedukowana przez UAC. MS w swojej mądrości był świadom, że pozwolenie aplikacji na wpisanie powodu wywalenia promptu tylko sprawę mallware uprości. Win7 "deduka" ciut lepiej niż Vista. Wciąż jednak do perfekcji brakuje wiele. :)
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Dab w Wrzesień 10, 2010, 11:58:04
Cytuj
MS w swojej mądrości był świadom, że pozwolenie aplikacji na wpisanie powodu wywalenia promptu tylko sprawę mallware uprości.

Ale czemu aplikacji? To system powinien wiedziec, czemu aplikacja potrzebuje UAC. Przykladowo:
"SuperPuchateEmotki.exe chca nadpisac plik C:\Windows\System\kernel32.dll. Pozwolic?"
a tak -- pokazuje sie okienko i juz. Nawet najbardziej pro user nie wie co dokladnie program chce zrobic.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Liosan w Wrzesień 10, 2010, 12:00:45
Ale czemu aplikacji? To system powinien wiedziec, czemu aplikacja potrzebuje UAC. Przykladowo:
"SuperPuchateEmotki.exe chca nadpisac plik C:\Windows\System\kernel32.dll. Pozwolic?"
A to by po 3 dniach nie zmieniło się w "rundll32.exe chce nadpisać plik..." ?

Liosan
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: Dab w Wrzesień 10, 2010, 12:10:12
To prawda, jezeli chodzi o malware to taki UAC niewiele pomoze. Natomiast czesto sciagam przykladowo jakas mala gierke kogos z warsztatu i na dzien dobry dostaje komunikat UAC. Chcialbym wiedziec czy to tylko ignoracja tworcy gry, czy tez probuje ona smiecic gdzie nie powinna.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w Wrzesień 10, 2010, 12:32:55
Ale czemu aplikacji? To system powinien wiedziec, czemu aplikacja potrzebuje UAC. Przykladowo:
"SuperPuchateEmotki.exe chca nadpisac plik C:\Windows\System\kernel32.dll. Pozwolic?"
a tak -- pokazuje sie okienko i juz. Nawet najbardziej pro user nie wie co dokladnie program chce zrobic.
I uważasz, że to pomoże przeciętnemu użytkownikowi w podjęciu wyboru? :D Nie sztuka zarzucić użytkownika informacjami, których nie rozumie. ;) Poza tym UAC najczęściej nie dotyczy konkretnych akcji (X nadpisuje Y) a podniesienia uprawnień programu. Przy Twojej ziarnistości program antywirusowy odpalany z palca pytałby z prędkością gatling guna. ;)
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w Wrzesień 11, 2010, 19:20:38
Albo ShellExecuteEx z verb "runas":
http://blogs.msdn.com/b/vistacompatteam/archive/2006/09/25/771232.aspx

Nie bardzo rozumiem do czego służy ten "runas". Co on właściwie daje?
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w Wrzesień 11, 2010, 21:38:49
Informuje, że chcesz uruchomić program z innymi kredencjałami. Obiekty w Windows (m.in. procesy) mają swój security descriptor. SD opisuje uprawnienia obiektu i wpływa na dostęp do innych obiektów i komunikację ze światem. Proces odpalony przez inny proces dziedziczy SD rodzica. Jeśli chcesz uruchomić proces z innymi prawami niż te domyślnie dziedziczone, musisz uruchomić proces z innymi kredencjałami. Do tego służy run as.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w Wrzesień 11, 2010, 23:02:38
Ok, to jeszcze takie pytanko:
z tego co wiem, niektóre programy wyświetlają te okienko (UAC prompt) przy instalacji, wyłącznie. A później już działają, aktualizują się itp. bez tego. To o wiele wygodniejsze, niż program ma wywalać te okienko przy każdym uruchomieniu, tak jak mam teraz. Jak tego dokonać?
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w Wrzesień 11, 2010, 23:06:22
z tego co wiem, niektóre programy wyświetlają te okienko (UAC prompt) przy instalacji, wyłącznie. A później już działają, aktualizują się itp. bez tego. To o wiele wygodniejsze, niż program ma wywalać te okienko przy każdym uruchomieniu, tak jak mam teraz. Jak tego dokonać?
Są dwie metody. Jedna: serwis. Dużo kodu. Druga: zmiana ACLs, ale nie polecam. W sumie to obu nie polecam. ;]
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w Wrzesień 11, 2010, 23:10:11
A zmiana uprawnień na katalog programu, przy instalacji (tak żeby nie wymagał praw administratora)? Można to łatwo zrobić ?
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: bies w Wrzesień 11, 2010, 23:19:42
z tego co wiem, niektóre programy wyświetlają te okienko (UAC prompt) przy instalacji, wyłącznie. A później już działają, aktualizują się itp. bez tego. To o wiele wygodniejsze, niż program ma wywalać te okienko przy każdym uruchomieniu, tak jak mam teraz. Jak tego dokonać?
Są dwie metody. Jedna: serwis. Dużo kodu. Druga: zmiana ACLs, ale nie polecam. W sumie to obu nie polecam. ;]
Coś się zmieniło od Win2k3 Srv/Win2k8 Srv? Bo podstawowy szkielet usługi raptem pół setki linii kodu. W [1] jest bardzo rozbudowany przykład.

// edit
Gdyby ktoś myślał, że przesadzam to poniżej powinno zadziałać jako usługa.
#include <windows.h>
   
SERVICE_STATUS          ServiceStatus;
SERVICE_STATUS_HANDLE   hStatus;
   
void ControlHandler(DWORD request) {
    switch(request) {
        case SERVICE_CONTROL_STOP:   
        case SERVICE_CONTROL_SHUTDOWN:
   
            // ... handle stop ...
   
            ServiceStatus.dwWin32ExitCode = 0;
            ServiceStatus.dwCurrentState  = SERVICE_STOPPED;
            SetServiceStatus(hStatus, &ServiceStatus);
            return;
    }
    return;
}       
       
void ServiceMain(int, char**) {
    ServiceStatus.dwServiceType      = SERVICE_WIN32;
    ServiceStatus.dwCurrentState     = SERVICE_START_PENDING;
    ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
    ServiceStatus.dwWin32ExitCode    = 0;
    ServiceStatus.dwServiceSpecificExitCode = 0;
    ServiceStatus.dwCheckPoint       = 0;
    ServiceStatus.dwWaitHint         = 0;

    hStatus = RegisterServiceCtrlHandler("ServiceName", (LPHANDLER_FUNCTION)ControlHandler);
    if (hStatus == (SERVICE_STATUS_HANDLE)0) {
        return;
    }
    ServiceStatus.dwCurrentState = SERVICE_RUNNING;
    SetServiceStatus (hStatus, &ServiceStatus);

    // ... main service code ...
}   

int main() {
    SERVICE_TABLE_ENTRY ServiceTable[2];
    ServiceTable[0].lpServiceName = "ServiceName";
    ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
                                   
    ServiceTable[1].lpServiceName = NULL;
    ServiceTable[1].lpServiceProc = NULL;

    StartServiceCtrlDispatcher(ServiceTable);
}

[1] http://msdn.microsoft.com/en-us/library/bb540476(VS.85).aspx
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w Wrzesień 12, 2010, 00:04:55
A zmiana uprawnień na katalog programu, przy instalacji (tak żeby nie wymagał praw administratora)? Można to łatwo zrobić ?
Przecież napisałem zmiana ACLs. :)

@bies: Napisać serwis to nie gigantyczny problem. Napisać go dobrze już jest trochę trudniej. Głównie przez to, że taki twór nie powinien robić coś non-stop, marnując zasoby ale też należy pamiętać, że dodatkowy serwis wydłuża czas ładowania systemu (chyba, że jest deferred jak stało się to możliwe bodaj w Viście). Poza tym instalacja serwisu wymaga nieco więcej pierdół w instalatorze i deinstalatorze. Serwis aktualizacyjny powinien być na tyle sprytny, że jeśli ktoś z palca usunie program to nie będzie na siłę go przywracał. Dobrze byłoby utrudnić ataki man in the middle...

Wszystko to składa się na trochę więcej kodu niż 50 linii, dużo więcej testowania a zysk dla użytkownika w tym konkretnym scenariuszu bardzo wątpliwy. Generalnie nie jestem zwolennikiem rzeźbienia serwisów do byle czego. A aktualizacja programu to właśnie takie byle co, IMO.
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: TrumpeT w Wrzesień 12, 2010, 00:10:13
A zmiana uprawnień na katalog programu, przy instalacji (tak żeby nie wymagał praw administratora)? Można to łatwo zrobić ?
Przecież napisałem zmiana ACLs. :)
A dlaczego to twoim zdaniem zly pomysl?
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: bies w Wrzesień 12, 2010, 00:13:25
ConayR: Aj tam, aj tam. Usługa to program jak każdy inny, jedyne czym się różni to wypełnieniem paru struktur na początku. Nie ma w tym żadnej magii. Jedynie instalacja może być rzeczywiście odrobinę bardziej skomplikowana (ale, prawdę powiedziawszy, bardzo rzadko bawię się w instalatory: sc create ...).
Tytuł: Odp: Problem z instalacją na Windows 7
Wiadomość wysłana przez: ConayR w Wrzesień 12, 2010, 00:21:33
A dlaczego to twoim zdaniem zly pomysl?
Idea instalowania aplikacji (a tym jest aktualizacja) jest taka, że użytkownik robi to świadomie. Nawet aktualizacje Windy domyślnie się pobierają a Ty decydujesz o instalacji. Zmieniając ACLs i robiąc aktualizację po cichu pozbawiasz użytkownika kontroli nad systemem. Poza tym zmieniając ACLs pozwalasz komukolwiek na podmianę aplikacji. Albo zainfekowanie jej wirusem rozprzestrzenianym przez aplikację bez podniesionych uprawnień. To zły pomysł.

@bies: Jasne, można użyć sc, ale skoro mówimy o narzędziu do aktualizowania aplikacji, to mówimy raczej o scenariuszach dla użytkowników, którzy wolą być prowadzeni za rękę a nie o poweruserach. Oferowanie im aplikacji bez instalatora albo z instalatorem, który później tylko wymaga użycia sc jest raczej słabym pomysłem. :)