Diskuze: WPF nejde spustit na jiném Pc
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 18 zpráv z 18.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvá aplikace WPF je .NET CORE, nebo .NET FRAMEWORK XY?
Pokud je aplikace na net framework, ten tvůj balíček má podporu pro.NET CORE 2 a vyšší, zkusil bych na ten PC nainstalovat runtime pro .NET CORE 2.
Pak případně prohledej logy, pokud nemáš logy v aplikaci, je možné mrknout do správce událostí v OS, tam se něco dostane. Třeba tě to víc navede...
Budu predpokladat ze je to nova aplikace napsana v .NET Core (resp. .NET 5+). Jestli ne a jedna se o novy projekt, doporucuji prepracovat do .NET 6 (asi bude chtit nove VisualStudio). Pri trose stesti by mohlo stacit vytvorit novy projekt a zdrojaky prekopirovat. .NET Framework je zombie platforma - MS uz nebude vydavat nove verze, jen bezpecnostni zaplaty.
Kdyz kliknes pravym tlacitkem na projekt, mel bys tam videt "Publish". Vytvor novy publikacni profil:
"Add a publish profile" > Target: Folder > Specific target: Folder, Location: nejaky adresar v PC.
Nasledne vypublikuj. To ti sestavi vsechny exace, DLLka apod. ktere se maji distribuovat spolecne. Mel bys tam videt i DLLko s PCANBasic. Cely tenhle adresar vem a zkopiruj ho na jiny PC a zkus tohle spustit.
Jde o .NET CORE 5 (maximum co nabízí VS 2019 Comunity).
Publish dělám uvedeným postupem. Dělám pro Release.
Knihovna je vypublikovaná do cílové složky viz. příloha.
Na PC kde chci spustit se nachází .Net Core 5.0.17 OS Win 10 x64 (ale zkoušel
jsem i na win 11 kde je .NET 7 se stejným výsledkem).
Jde o .NET CORE 5 (maximum co nabízí VS 2019 Comunity) a na cílovém počítači .Net Core je viz. můj předešlý příspěvek (odpověď na příspěvek Bugmaster).
Zkusím ještě zkontrolovat ty Logy a dám vědět.
Tak to by melo fungovat.
Napada me nekolik moznych problemu:
dotnet --list-runtimes
Vypsanej seznam by mel obsahovat
Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Jeste mi to nedalo a podival jsem se na tu podezrelou knihovnu.
To je neco pro komunikaci s externima zarizenima? Nezkousi se to po spusteni s necim neuspesne komunikovat (nebo treba zjistovat dostupna zarizeni apod.) a na tom to z nejakeho duvodu zamrzne? Nebo mozna chybejici driver apod. Nemuze byt v necem takovem?
Slouží to ke komunikaci s CanBus pomoci PCAN-USB . V podstatě mi to otevře spojeni a já pak mohu číst/posílat zprávy z/na CAN. Aplikace by se měla spustit i bez připojeného adaptéru - na mém vývojovém Pc se spouští. Na druhém Pc kde se nechce spustit jsou nainstalovány všechny potřebné ovladače k tomuto adaptéru včetně zapojeného PCAN-USB (používám ho i pro jiné akce). Takže v tomto by problém být neměl.
Potřebný .NET Runtime je tam také viz. přiložený obrázek. Zkontroloval jsem ještě ty logy - ukazuje to problém s knihovnou KERNELBASE.dll. Co to znamená v tuto chvíli nevím.
Na základe toho, co pises, si myslim, ze vim, kde je problem.
Ta aplikace se normalne spousti. Samotna pritomnost knihovny neni problem.
Problem je, ze hned po spusteni padne. Ve starem WinForms se nezachycene vyjimce
zobrazila chybovka s chybovou zpravou, typem Excepčny a vypisem stacktrace. U
WPF se to bohuzel nedeje
Nekolik tipu:
Popravdě zakomentováváni funkcí jsem zkoušel už na začátku. Nechal jsem tam pouze funkci pro inicializaci. Aplikace nejde spustit.
PcanStatus result = Api.Initialize(PcanChannel.Usb01, Bitrate.Pcan500);
Pokud jsem tě správně pochopil, je třeba do programu doplnit kód pro zachycení výjimky a aplikace pak bude šlapat jak má? Kdyby to vyhazovalo nějakou výjimku pak by to přece neběželo ani na lokálním Pc?
Tak pak temer jiste je tohle ten radek, ktery zpusoby pad aplikace. Zkus i ten vyhodit, jestli to padne. Podivej se do dokumentace, jestli tam neni napsano, za jakych okolnosti muze vyhodit vyjimku.
Podivej se do toho Event Vieweru, na chybu ze zdroje ".NET Runtime". Urcite tam nejaka bude.
Ad zachyceni:
To zalezi. Pri zachyceni vyjimky by jsi mel reflektovat jaka chyba nastala, co
to znamena a podle toho se zachovat. Nektere chyby ignorovat muzes, jine ne.
To co jsem psal jsem nemyslel tak, ze zachytis vyjimku a budes se tvarit, jako ze nikdy nenestala. To je spatny pristup. Myslel jsem to tak, ze zachytis vyjimku, zobrazis chybovou zpravu (aby uzivatel videl, ze je neco spatne - ne jen nahle vypnuti programu) a nasledne ukoncit program.
Pocitace nejsou stejne. Na cilovem PC muze byt neco jinak, co zpusobuje padani.
Pokud to tam není tak aplikace běží což je sice fajn, ale bez této funkce se neobejdu.
Dle dokumentace můžou být 2 výjimky
Podivej se do toho Event Vieweru, na chybu ze zdroje ".NET Runtime". Urcite tam nejaka bude.
Žádnou takovou chybu tam nevidím.
Ano, to chapu, ze se bez toho neobejdes. Kdyz to ale bez ni bezi, tak s jistotu vis, ze to je ten radek, ktery zpusobuje problem, ne?
Tak tu chybu zachyt a v nejakem MessageBoxu zobraz chybovku z vyjimky.
Ok, to je zvlastni, ze tam ta chyba neni.
Ok zkusím.
Jinak pátral jsem po tom kernelbase a možná to bude mit také vliv. na zmíněném odkaze se v jednom příspěvku zmiňuje:
I had the same problem with a custom VB.Net application, framework 2 running on Windows 2008 x64. Compiling for x64, x86, or Any CPU didn't work, neither did re-adding the Excel COM object or other resources or setting the compatibility mode, or any of another half dozen things I tried. Finally, I set the .exe file properties to "Run as Administrator" and wallah - everything runs great! I suspect there are embedded security or other settings that are the ultimate cause.
Zkusím tedy i tuto variantu až seženu správce pc (nemám dostatečné oprávnění).
Ano, je mozny, ze jak se to snazi neco inicalizovat, tak na to potrebuje nejake opravneni.
Bohužel ani spuštěni jako správce nepomohlo.
Je, ale vidět, že k nějaké chybě při přihlašováni dochází i u admina.
This error appears on your computer when you do not have the TLS 1.0 and TLS 1.1 enabled
Jen pro info - kdyby někdo někdy řešil stejný problém
Celý zádrhel proč to nešlo spustit byl v ovladačích. Měl jsem je sice nainstalované, ale nejspíš tam něco chybělo. Ovladače jsem znovu přeinstaloval, dle těchto pokynů a světe div se, ono to funguje.
Windows:
For using PCAN-Basic.NET you need:
to have the Windows device drivers installed, by using the PEAK-Drivers Setup,
to have any plug-and-play device of the PCAN series attached to your PC, and
to have the PCAN-Basic API installed, by using the PEAK-Drivers Setup (recommended). Alternatively, you can download a package containing all needed files and setting instructions.
PCAN-Gateway devices: If you want to communicate to PCAN-Gateways devices using PCAN-Basic, then you need to additionally install the feature "Virtual PCAN-Gateway" within the PEAK-Drivers Setup. Note that this is only supported on Windows systems.
Zobrazeno 18 zpráv z 18.