Korzystam z 64-bitowej wersji systemu Windows 7 od czasu CTP i napotkałem kilka problemów z aplikacjami instalowanymi w C:\Program Files (x86)
folderze. Jaki jest cel posiadania 2 oddzielnych katalogów plików programu?
Każdy program, który zainstalowałem, znalazł się w C:\Program Files (x86)
folderze. Nie ma znaczenia, czy aplikacja jest 32- czy 64-bitowa. Dlaczego aplikacje 64-bitowe nie są umieszczane C:\Program Files
?
Czy istnieje sposób, aby C:\Program Files
zamiast tego zmienić domyślną wartość ? Czy coś by to popsuło, gdybym tylko wszystko włożył C:\Program Files
?
Jeśli rzeczywiście istnieje pewna korzyść z posiadania osobnego folderu dla aplikacji 64-bitowych, wydaje się, że bardziej rozsądnym rozwiązaniem byłoby użycie C:\Program Files
aplikacji x86 i utworzenie nowego C:\Program Files (x64)
folderu dla nowych aplikacji 64-bitowych. Pomogłoby to zachować zgodność wsteczną. Pracuję jako programista, a niektóre z moich projektów zawierają odwołania do ścieżek do bibliotek pod C:\Program Files
. Teraz te odniesienia są zepsute na komputerze z systemem Windows 7, który je umieścił C:\Program Files (x86)
. Próbowałem nawet zmienić lokalizację docelową w instalatorze C:\Program Files
, ale to zostało zignorowane, a aplikacja i C:\Program Files (x86)
tak się zmieniła .
Jest to bardzo frustrujące, ponieważ muszę współdzielić kod źródłowy między maszynami 32- i 64-bitowymi i nie chcę bałaganu w jakimś pliku konfiguracyjnym, który inaczej ustawia ścieżkę do tych bibliotek na różnych komputerach.
Edycja dotycząca zmiennych środowiskowych: (Używając tylko domyślnych angielskich wartości zmiennych dla uproszczenia.) Na komputerze 64-bitowym %ProgramFiles%
będzie, C:\Program Files
podczas gdy zupełnie nowa zmienna %ProgramFiles(x86)%
będzie C:\Program Files (x86)
. Tak więc, jeśli masz program 32-bitowy, który musi znaleźć ścieżkę do folderu, w którym byłby zainstalowany, musiałby sprawdzić, czy działa na 32-bitowej lub 64-bitowej wersji systemu Windows w celu wiedzieć, której zmiennej środowiskowej użyć. Wszelkie 32-bitowe aplikacje, które zostały napisane bez tych uwag, muszą zostać zaktualizowane, aby działały poprawnie na komputerze 64-bitowym. Więc nawet przy użyciu zmiennych środowiskowych zgodność wsteczna jest zepsuta.
Ponadto %ProgramFiles(x86)%
nie istnieje w 32-bitowych wersjach systemu Windows. Gdyby tak było, wówczas 32-bitowe aplikacje mogłyby zawsze używać tej zmiennej środowiskowej i nie potrzebowałyby żadnej logiki warunkowej w oparciu o system operacyjny, na którym działają.
%ProgramFiles%
zmiennej środowiskowej rozwiązałoby to. Nie jestem pewien, jak radzi sobie z różnicą x86 / 64bit.