2015-09-15 40 views
10

Zgodnie z zasadami instalacji systemu Windows, programy powinny być zainstalowane na C:\Program Files (program 64-bitowy/x86-64) lub C:\Program Files (x86) (program 32-bitowy/x86). Program jest kopiowany do pod-podkatalogu zawierającego nazwę dostawcy i nazwę programu.Dlaczego Chocolatey nie instaluje pakietów w `C: Program Files `?

Ale dlaczego Chocolatey nie instaluje pakietów w C:\Program Files\<Vendor>\<Program>\?

10. Aplikacje należy zainstalować do odpowiednich folderów domyślnie
Użytkownicy powinni mieć spójną i bezpieczne doświadczenia z domyślnej lokalizacji instalacji plików, zachowując opcję, aby zainstalować aplikację w miejscu ich wybór. Konieczne jest również przechowywanie danych aplikacji w poprawnej lokalizacji, aby umożliwić kilku osobom korzystanie z tego samego komputera bez uszkadzania lub nadpisywania danych i ustawień nawzajem. Windows dostarcza konkretnych lokalizacji w systemie plików do przechowywania programów i komponentów programowych, wspólne dane aplikacji i dane aplikacji specyficznych dla użytkownika

10,1 Twoja aplikacja musi być zainstalowana w folderze Program Files domyślnie
dla rodzimych 32 -bitowe i 64-bitowe aplikacje w% ProgramFiles% i% ProgramFiles (x86)% dla aplikacji 32-bitowych działających na x64. Dane użytkownika lub dane aplikacji nie mogą być nigdy przechowywane w tej lokalizacji ze względu na uprawnienia zabezpieczeń skonfigurowane dla tego folderu.

Źródło: Certification requirements for Windows desktop apps
Wersja: 10 (29 lipca 2015)

+0

Nie ma reguły wyryty w kamieniu dla '' '-part. W ogóle nie ma reguły gdzie zainstalować (chociaż późniejsze wersje Windowsa wydają się wymuszać jakieś szalone rzeczy). Jedyną "regułą" jest to, że sugestia dla domyślnego katalogu instalacyjnego używa zmiennej environmentfiles (szczególnie jeśli nie pozwala się użytkownikowi wybrać miejsca instalacji). * NIEKTÓRE * programy (takie jak LearnKey (ironicznie) i Asus Probe) łamią tę zasadę i kodują ścieżkę. Osobiście byłbym bardzo zły, gdybym na przykład nie mógł zainstalować moich gier w E:/Games/obok mojego E:/Programs/.. – GitaarLAB

+0

@GitaarLAB Właściwie, istnieją wymagania certyfikacyjne napisane przez Microsoft, które podają na przykład gdzie domyślnie instalować aplikacje. Nie oznacza to, że możesz zmienić katalog w GUI instalatora lub parametrze, aby wybrać na przykład inny dysk twardy. Niestety nie mogę znaleźć wersji dokumentu dla "aplikacji dla komputerów stacjonarnych z Windows 8.x". Jestem pewien, że istniała reguła dla ' \ '. – Paebbels

+0

Świetny dodatek do Twojego pytania! (Możesz dodać strukturę katalogów, której używają pakiety Chocolatey dla tych, którzy nie znają tego programu). Ale trzymam się mojego komentarza (nie odpowiadam): około 90% (ponad 500) programów zainstalowanych na moim komputerze (komputerach) jest bez części dostawcy (a ja * zwykle * nie zadzieraj z tą częścią; po prostu sprawdź, czy nie jest to naiwny, zakodowany na sztywno, niespełniający specyfikacji, instalator (w rzeczywistości rzadki)). Kluczowe słowa w zapytaniach dotyczących wymagań certyfikacyjnych dodanych do pytania to "default" i "% ProgramFiles%" oraz "% ProgramFiles (x86)%" (co właśnie komentowałem). – GitaarLAB

Odpowiedz

8

To zależy od wersji Chocolatey, to ustawienia i same pakiety.

Aby rozpocząć, zobacz Narzędzia vs Aplikacje i wyróżnieniem Chocolatey'S ( https://github.com/chocolatey/chocolatey/wiki/ChocolateyFAQs na dołu).

Jeśli pakiet nie używa rodzimego instalatora (to narzędzie), to zależy od jeśli autor pakiet wykorzystał koncepcję bin_root że jest gotowy do przyjście w przyszłej wersji.

Na przykład SysInternals przejdzie teraz do c:/sysinternals, chyba że masz zdefiniowaną zmienną $env:chocolatey_bin_root. Koncepcja w kodzie zmieni się tak samo jak obecnie, wymaga to, aby był podfolderem napędu systemowego i nie widzimy, abyśmy opracowywali ostateczną cechę z tym ograniczeniem.

Jeśli pakiet nie ma jeszcze tego pojęcia, zawsze można poprosić autora pakietu o wpisanie go na .

Jeśli pakiet używa rodzimego instalatora (aplikacja), można użyć installArgs przekazywać argumenty do rodzimego instalatora (https://github.com/chocolatey/chocolatey/wiki/CommandsInstall) i powiedzieć, że katalog, aby zainstalować aplikację do. To wymaga , aby wiedzieć, co należy przekazać do rodzimego instalatora.Jeśli chcesz, aby twoje aplikacje w katalogu niestandardowym były założone, że jesteś już zaawansowanym użytkownikiem, prawdopodobnie będziesz wiedział, , aby przekazać instalator, jeśli wykonywałeś cichą instalację.

Nieco parafrazując od: https://groups.google.com/forum/#!msg/chocolatey/uucAz8GxebA/HEPAKp69d90J

Również

UWAGA: Zgodnie z 0.9.8.24, domyślnie Chocolatey za zainstalować lokalizacja jest C:\ProgramData\Chocolatey

Zmniejsza to powierzchnię ataku na lokalna instalacja czekoladowa i ograniczenia, które mogą wprowadzać zmiany w katalogu.

Źródło: https://github.com/chocolatey/chocolatey/wiki/DefaultChocolateyInstallReasoning

I z własnego doświadczenia mogę potwierdzić, że ta koncepcja jest doskonałą linię obrony (jeśli poprawnie skonfigurowany, używane i rozumiane).

PS:
Jak już dodany do odpowiedzi, technicznie wymóg jest %ProgramFiles% i %ProgramFiles(x86)% zmienna środowiskowa (s ile dotyczy).
Na przykład %ProgramFiles(x86)% może równie dobrze wskazywać na P:\Software\Programs\x86\ (zamiast C:\Program Files (x86)\).
Istnieje oczywiście wiele starszych programów (teraz (ponownie) zapakowanych), które nigdy nie używały sekcji <vendor> w nazwie ścieżki.

Mam nadzieję, że to pomoże!

+3

Myślę, że znalazłem swoją winę. Myślałem, że pakiety NuGet/Chocolatey są pakietami jak pakiety * .deb, ale to tylko opakowanie do automatycznego pobierania i cichej instalacji. Tak więc katalog instalacyjny jest nadal ustawiony przez wbudowany lub pobrany instalator MSI. Whcih of cause może używać domyślnego lub zdefiniowanego przez użytkownika katalogu. – Paebbels

+0

Tak, dokładnie (to było to, co starałem się zarysować w mojej odpowiedzi (używając słowa przepakowane i cytatów i wyróżnień)). Cieszę się, że mogłem pomóc! – GitaarLAB

+0

Niektóre z nich są. Zazwyczaj mamy rozróżnienie, że jeśli oprogramowanie bazowe pojawi się w menu Programy i funkcje, przejdzie do plików programów. Jeśli oprogramowanie jest narzędziem, które pojawia się jako plik zip, nie jest ono faktycznie zainstalowane na komputerze, więc nie ma integracji z lokalizacjami Microsoft. – ferventcoder