Autor Wątek: Kompatybilność programu z win7 na win 8.1  (Przeczytany 3813 razy)

Offline TDM

  • Użytkownik

# Maj 14, 2016, 02:32:52
Witam!

Obecnie posiadam trochę starszy sprzęt, mam zainstalowany Windows 7 i mam napisać prostą aplikację na Windows 8.1 w żadnym Visualu tylko ściągam MinGW, tylko jak z kompatybilnością ? Proste funkcje WinAPI, jedno okienko i zapis do pliku. Czy może być problem jak napiszę to na Win7 i odpalę na Win8.1 ?

Pozdrawiam.

Offline Mr. Spam

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

Offline Interceptor

  • Użytkownik

# Maj 14, 2016, 20:13:04
Nie będzie żadnych problemów. Jedynie w manifeście dodaj:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates application support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates application support for Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>

Offline TDM

  • Użytkownik

# Maj 14, 2016, 20:24:32
Rozumiem że ten  manifest to plik z nazwą identyczną jak program tylko rozszerzenie manifest

Offline Interceptor

  • Użytkownik

# Maj 14, 2016, 20:50:57
Tak

Offline MDW

  • Użytkownik
    • www.encore-games.com

  • +6
# Maj 14, 2016, 22:03:51
Nie będzie żadnych problemów. Jedynie w manifeście dodaj:
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates application support for Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!--The ID below indicates application support for Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
Naprawdę trzeba wklepać te magiczne długaśne i pozornie bezsensowne numerki? :) Widzę, że pod kafelkami nadal nic się w Windowsie i filozofii Microsoftu nie zmieniło. :)
« Ostatnia zmiana: Maj 14, 2016, 22:06:05 wysłana przez MDW »

Offline Durson

  • Użytkownik

  • +3
# Maj 15, 2016, 03:35:36
Czytelność godna rejestru systemowego. I tak samo to logiczne :)
Wyobrażacie sobie, że na linuksie macie odpowiednią do uruchomienia binarkę ale nie działa bo musicie jakieś hasze do pliku wy**rać? :D

Offline MDW

  • Użytkownik
    • www.encore-games.com

  • +3
# Maj 15, 2016, 04:00:28
Czytelność godna rejestru systemowego. I tak samo to logiczne :)
Wyobrażacie sobie, że na linuksie macie odpowiednią do uruchomienia binarkę ale nie działa bo musicie jakieś hasze do pliku wy**rać? :D
To jest jakiś absurd. Nie można było tych haszy jakoś nazwać, zmapować na coś czytelnego dla człowieka? I pomyśleć, że to się dzieje w najpopularniejszym na tej planecie systemie operacyjnym. Nie mam styczności z Windą i microsoftowymi technologiami ale myślałem, że wraz z kafelkami coś się tam pod spodem zmienia. A to tylko kolejna (tym razem ładna) fasada na 30-letni bajzel. Ech, Microsoft...

Offline lethern

  • Użytkownik

# Maj 15, 2016, 12:56:52
Ale to nie jest plik "super leniwy hack dla leniwych (nie)programistów" tylko plik manifestu... :)

U mnie przy najbardziej domyślnej kompilacji taki plik się generuje.. Zresztą, może MinGW ma opcję do generacji tego
« Ostatnia zmiana: Maj 15, 2016, 12:59:37 wysłana przez lethern »

Offline Rolek

  • Użytkownik

# Maj 15, 2016, 14:46:49
Ile programów przestało wam działać na nowych Windowsach?

Najczęściej problemy z kompatybilnością wynikają z używania "nieudokumentowanych cech systemu" (lub udokumentowanych, ale z wielkim napisem "ta funkcjonalność może się zmienić lub być niedostępna w przyszłych wersjach systemu") – zwykle są to błędy przeoczone "bo działa"; czasem robi się tak specjalnie mając świadomość, że może to kiedyś przestać działać.

Radzę przetestować aplikację na docelowej wersji systemu, zamiast mieć nadzieję, że wpis w manifeście magicznie rozwiąże wszystkie problemy.

Offline Xion

  • Redaktor
    • xion.log

# Maj 15, 2016, 18:22:58
Cytuj
Radzę przetestować aplikację na docelowej wersji systemu, zamiast mieć nadzieję, że wpis w manifeście magicznie rozwiąże wszystkie problemy.
Huh? O jakiej magii ty tu mówisz? O ile dobrze rozumiem, ten manifest jest potrzebny żeby aplikację na Win8.1 w ogóle uruchomić, nawet jeśli to tylko Hello world który używa jedynie koszernych API. Mylisz warunek konieczny z wystarczającym.

Offline karol57

  • Użytkownik

# Maj 15, 2016, 21:02:41
Miałem Windowsa 8.1, teraz mam 10 i żadnych magicznych manifestów nie potrzebowałem. Po co to to w ogóle? Bo jedyną rzecz jaką kojarzę to (chyba) wymuszanie praw administratora dla aplikacji.

// EDIT: Czy to się tyczy tylko metro apek?

Offline Rolek

  • Użytkownik

  • +2
# Maj 15, 2016, 21:47:51
Huh? O jakiej magii ty tu mówisz?
O tej:
Nie będzie żadnych problemów. Jedynie w manifeście dodaj:
Jeśli w aplikacji będą błędy to manifest ich nie naprawi.

O ile dobrze rozumiem, ten manifest jest potrzebny żeby aplikację na Win8.1 w ogóle uruchomić
Nie jest.

Są przypadki aplikacji, z którymi są problemy na nowszych wersjach Windows. Są ludzie, którzy nie biorą nawet darmowych aktualizacji bo używają takiego oprogramowania.
Co by się stało gdyby nowa wersja Windowsa nie chciała uruchomić 99% oprogramowania, które działało na poprzedniej wersji, "bo nie"???

Offline Kos

  • Użytkownik
    • kos.gd

  • +3
# Maj 15, 2016, 22:25:23
Wyobrażacie sobie, że na linuksie macie odpowiednią do uruchomienia binarkę ale nie działa bo musicie jakieś hasze do pliku wy**rać? :D
Nie wyobrażam sobie, bo na każde distro (albo wersję distro) binarka bywa zupełnie inna, albo wcale jej nie ma, więc muszę jej szukać po jakichś szemranych PPA albo kompilować ze źródła. :)

Nie wiem jak działa manifest, ale prosty xml z informacją o tym ile "potrafi" aplikacja to wg mnie z zasady rozsądna rzecz. Czytelność manifestu mogłaby być lepsza, ale nadal uważam że to szczegół czy identyfikujemy system guidem czy tekstem.
« Ostatnia zmiana: Maj 15, 2016, 22:27:07 wysłana przez Kos »

Offline Interceptor

  • Użytkownik

# Maj 15, 2016, 23:19:30
Ten manifest na pewno informuje system, że aplikacja jest z nim kompatybilna i jednym z powodów dla których go używam jest to, że nie pojawia się komunikat systemowy "Ta aplikacja jest niepoprawnie zainstalowana". Jeszcze był za coś innego odpowiedzialny, ale już nie pamiętam za co. Nie jest on wymagany do działania aplikacji, ale domyślnie w VS jest dołączany do exe.

Visual Studio(na pewno 2010 oraz 2012) generuje błędnie plik manifestu z takim wpisem, dlatego trzeba go dołączać do exeka ręcznie za pomocą wbudowanego toola MT z VC. Mi to narzędzie automatycznie uruchamia się w evencie PostBuild po utworzeniu pliku exe.

Dodam, że tworzyłem dużo aplikacja mocno ingerujących w system operacyjny XP-Win7 i żadna nie miała problemu z działaniem pod Win 8.x i 10.

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Maj 16, 2016, 16:40:37
Ja nie piszę żadnych manifestów do aplikacji Windows i jakoś wszystko zawsze działa, zarówno na Windows 7, 8, 8.1 jak i 10. Więc potwierdzam, że nie są niezbędne do uruchamiania plików EXE. Co najwyżej można poczytać, w jakich przypadkach trzeba ich używać albo co dodatkowo można za ich pomocą uzyskać.