Przerobienie aplikacji pod 32bity.

0

Cześć, używam VisualStudio 2019, piszę w języku c# i używam windows forms. Jak przerobić napisaną aplikację tak, aby uruchamiała się na 32 bitowym systemie?
Pozdrawiam.

0

Dziwne, program działa na Windows 10 64 bit, u kolegi z nieznanym mi systemem działa, a na Windows 10 32 bit wyskakuje komunikat:
555.jpg

W ustawieniach wybrane automatycznie było AnyCPU:
4545.png

0

Jeżeli budujesz aplikację w systemie 64 bitowym, to wynikiem kompilacji będzie 64 bitowy program, który nie uruchomi się na 32 bitowym procesorze.
Musisz zmienić "Cel platformy" na x86, wtedy plik wynikowy uruchomi się na Windows 10 32bit.

1

Żeby mieć 32-bit apkę to wystarczy "zahaczyć" opcję Preferuj 32-bitowe

1

W ustawieniach kompilacji gdzie masz AnyCPU wybierz inne, dodaj x86 i po kłopocie

1

Jeśli mowa o desktopie, to...
Na AnyCPU kompiluje się biblioteki, które nie mają zależności od innych bibliotek o określonej bitowości. Projekt exe powinieneś budować pod konkretne platformy, czyli x86 i x64, i co tam jeszcze masz. Projekty testów, lepiej kompilować na x86 (na tej platformie domyślnie są obsługiwane testy).

AnyCPU powoduje to, że biblioteka tak skompilowana pracuje w takiej bitowości, jak aplikacja ją używająca.

0

Nie bardzo rozumiem. Mowa jest o powtórnej kompilacji czy przerobieniu już istniejącej aplikacji ?

0

Mając na uwadze tylko to, co przedstawił w poście zacząłbym od kompilacji :)

0

A co do przerobienia, to zależy jak został napisany kod.

0

@Juhas: C# to nie C++ . A nie wystarczyłoby zmienić plik konfiguracyjny żeby aplikacja uruchamiała się w 32 bitach ?

0

@Zimny Krawiec: a co ma do tego C++? W C# też możesz napisać taki kod, który spowoduje Ci problemy przy innej bitowości :/

0

@Juhas:

Juhas napisał(a):

Jeśli mowa o desktopie, to...

Na AnyCPU kompiluje się biblioteki, które nie mają zależności od innych bibliotek o określonej bitowości. Projekt exe powinieneś budować pod konkretne platformy, czyli x86 i x64,

Jeżeli w dotnetowym programie nie używamy żadnych bibliotek natywnych, to jaki sens jest używać czegokolwiek innego niż AnyCPU. Przecież to najłatwiejszy sposób by uniezależnić się od platformy.

0

Tu jest ciekawie to opisane: https://docs.microsoft.com/en-us/windows/msix/package/device-architecture#x86 głównie ten akapit:

Choosing x86 is generally the safest configuration for an app package since it will run on nearly every device. On some devices, an app package with the x86 configuration won't run, such as the Xbox or some IoT Core devices. However, for a PC, an x86 package is the safest choice and has the largest reach for device deployment. A substantial portion of Windows 10 devices continue to run the x86 version of Windows.

0

Cześć, przepraszam za długi czas bez odpowiedzi.
Niestety urwał się kontakt z osobą, która miała Windows 10 32 bit. Nikogo innego już nie kojarzę z takim systemem, lecz zaciekawiła mnie kwestia uruchomienia programu na starym Windows XP x32 z zainstalowanym net 3,5 oraz net 4,0. Niestety cały czas wyskakuje komunikat, że aplikacja nie jest poprawną aplikacją win32.
1.png
2.png

Użyłem następujących bibliotek:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Diagnostics;
using System.IO;
using System.Threading;

1

Stare windowsy miały net frameworka, a net core jest stosunkowo nowe, powinieneś zmienić na net framework 3.5 i powinno działać.

0

Dzięki za wskazówki :) Niestety nie miałem na liście do wyboru Net Framework 3,5. Po kliknięciu w zainstaluj inne platformy przekierowuje mnie na stronę pobierania. Pobrałem Net Framework 3,5 SP1 runtime i plik instalacyjny nie chce się uruchomić.

3.png
4.png

Znalazłem jeszcze wskazówkę, aby uruchomić Visual Studio Installer -> Pojedyncze składniki -> w sekcji .NET zaznaczyć Narzędzia programistyczne programu . NET Framework 3.5.

Niestety nie mam dodatkowej opcji do wyboru oprócz .NET Core.

2

Musosz chyba zrobic nowy projekt windows framework i wtedy będziesz miał wersję 4.x

0

Dzięki! Po utworzeniu nowego projektu z .Net Framework w nawiasie wszystko działa na Xp x32 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1