Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

Aktivity
Avatar
Zdeněk Dvorský:13.6.2023 18:56

Ahoj po velmi dlouhé době začínám oprašovat C#, zkouším spustit aplikaci WPF na jiném Pc, V podstatě se jen roztočí kolečko jako by byla snaha o spuštění, ale k tomu nedojde. V aplikaci je knihovna třetí strany přidaná jako balíček NuGet do referencí. Na mém vývojovém Pc aplikace běží bez problému. Vývojové prostředí VS 2019 Comunity.

Pokud zakomentuji funkce pocházející z této knihovny, tak se aplikace spustí i na jiném PC. Pokud tam ty funkce nechám, tak ke spuštění nedojde.
Například tato funkce:

PcanStatus result = Api.Initialize(PcanChannel.Usb01, Bitrate.Pcan500);

Zkusil jsem: Při publikováni jsem zkoušel různá nastavení:

  • konfigurace -> Release Any CPU
  • Režim nasazení -> Závislé na architektuře (zkoušel jsem i Samostatné)
  • Cílový modul runtime -> přenosné (zkoušeno i z win-x86)

Předpokládám, že pokud byla knihovna do projektu vložena jako NuGet a projekt pak je publikován standartním způsobem, mělo by VS vytvořit spustitelný soubor se všemi potřebnými referencemi. Ve výsledné složce se nachází i zmiňovaná knihovna

PCANBasic.NET.dll

Chci docílit: Můžete mi prosím někdo poradit co je všechno třeba udělat, abych aplikaci spustil i na jiném Pc? Díky

 
Odpovědět
13.6.2023 18:56
Avatar
Ghst
Člen
Avatar
Ghst:14.6.2023 8:48

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...

 
Nahoru Odpovědět
14.6.2023 8:48
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Zdeněk Dvorský
Bugmaster:14.6.2023 12:59

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.

 
Nahoru Odpovědět
14.6.2023 12:59
Avatar
Odpovídá na Bugmaster
Zdeněk Dvorský:14.6.2023 20:25

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).

 
Nahoru Odpovědět
14.6.2023 20:25
Avatar
Odpovídá na Ghst
Zdeněk Dvorský:14.6.2023 20:31

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.

 
Nahoru Odpovědět
14.6.2023 20:31
Avatar
Bugmaster
Člen
Avatar
Bugmaster:14.6.2023 20:52

Tak to by melo fungovat.

Napada me nekolik moznych problemu:

  1. Pokud se nepletu, tak na cilovem pocitaci musi byt nainstalvany Desktop Runtime. Jestli to tak je, zjistis commandem
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]
  1. Kdyz se to pokusis spustit, objevi se neco v Event Vieweru? Obvykle jsou tyhle zaznamy v "Windows Logs > Application"
  2. Nemuze to treba blokovat prilis horlivy Antivir? Mimochodem, spousti se SmartScreen (takova ta modra obrazovka "Vas pocitac byl ochranen")? Protoze to by se nejspis mel, popkud to nemas podepsany code signing EV certifikatem.
 
Nahoru Odpovědět
14.6.2023 20:52
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Zdeněk Dvorský
Bugmaster:14.6.2023 21:51

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?

 
Nahoru Odpovědět
14.6.2023 21:51
Avatar
Odpovídá na Bugmaster
Zdeněk Dvorský:15.6.2023 6:06

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.

 
Nahoru Odpovědět
15.6.2023 6:06
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Zdeněk Dvorský
Bugmaster:15.6.2023 7:20

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:

  1. Mam zkusenost, ze tyhle chybovky jsou v Event Vieweru po dvou. Ta druha je prave tahle s KERNELBASE.dll (to taky nevim, co to je), ktera je uplne k nicemu. Ta predtim ale obsahuje vsechny potrebene.
  2. Muzes si vytvorit vlastni okno s chybovkou, ktere se zobrazi pri padu aplikace. Urcite to uz nekdo nekdy resil.
  3. Teoreticky to muzes debugovat metodou pokus omyl. Zakomentovat vsechny volani funkci z knihovny a postupne odkomentovavat. V momente kdy to spane, vis, co to zpusobuje.
 
Nahoru Odpovědět
15.6.2023 7:20
Avatar
Odpovídá na Bugmaster
Zdeněk Dvorský:15.6.2023 8:50

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?

 
Nahoru Odpovědět
15.6.2023 8:50
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Zdeněk Dvorský
Bugmaster:15.6.2023 9:24

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.

 
Nahoru Odpovědět
15.6.2023 9:24
Avatar
Odpovídá na Bugmaster
Zdeněk Dvorský:15.6.2023 9:53

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.

 
Nahoru Odpovědět
15.6.2023 9:53
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Zdeněk Dvorský
Bugmaster:15.6.2023 10:21

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.

 
Nahoru Odpovědět
15.6.2023 10:21
Avatar
Odpovídá na Bugmaster
Zdeněk Dvorský:15.6.2023 10:44

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í).

 
Nahoru Odpovědět
15.6.2023 10:44
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Zdeněk Dvorský
Bugmaster:15.6.2023 11:12

Ano, je mozny, ze jak se to snazi neco inicalizovat, tak na to potrebuje nejake opravneni.

 
Nahoru Odpovědět
15.6.2023 11:12
Avatar
Odpovídá na Bugmaster
Zdeněk Dvorský:15.6.2023 13:18

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.

 
Nahoru Odpovědět
15.6.2023 13:18
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Zdeněk Dvorský
Bugmaster:15.6.2023 13:37

This error appears on your computer when you do not have the TLS 1.0 and TLS 1.1 enabled

Zdroj: https://www.thewindowsclub.com/…t-credential

 
Nahoru Odpovědět
15.6.2023 13:37
Avatar
Odpovídá na Bugmaster
Zdeněk Dvorský:19.6.2023 6:57

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.
 
Nahoru Odpovědět
19.6.2023 6:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.