Forum: PC Hard- und Software Installer auf dern Entwicklungrechner funktioniert und auf andere nicht


von Saif K. (saif_k58) Flattr this


Lesenswert?

Hallo zusammen,

ich habe folgende problem:

Einen SW installer, der in auf der Entwicklungsmaschine einwandfrei 
funktioniert
und auf einen andere PC nicht.

Ich bekomme immer einen Fehlermeldung, die besagt dass einen bestimmten 
DLL "not available"
was nicht sein kann.

Für diese SW wurde einen DLL, von einen externen Lieferant angewendet.
Dieses DLL beschreibt die USB Kommunikation zu einer Firmware.
Dieses DLL wurde in C# geschrieben und das war mindesten vor 10 Jahre.
Dieses DLL wurde mit Framwork Version (.NET) 2.0 erstellt.
Den Sourcecode haben wir leider nicht und der externe lieferant 
existiert auch nicht mehr.

--> mit der Visual Studio 2008 war ne einen Problem.
Es hat immer funktioniert.

Da es Visual Studio 2008 bis mitte 2018 supportet wird, müssen wir der 
Sprung auf Visual
Studio 2015 machen was auch getun wurde.

Wir alle notwendige Änderung für die Integration sind durchgeführt.
Nach ach und krach funktioniert aber nur weil es einen extra konfig 
Datei geschrieben werden muss.
Mit denen wird die SW gezwungen mit einen bestimmten Framwork(.NET) 
einen Build zu machen.

Diese Konfig Datei sieht so aus:
1
<?xml version="1.0" encoding="utf-8" ?>
2
<configuration>
3
  <startup useLegacyV2RuntimeActivationPolicy="true">
4
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
5
  </startup>
6
  <runtime>
7
    <NetFx40_LegacySecurityPolicy enabled="true"/>
8
  </runtime>
9
</configuration>

und die muss auch so heissen wie der Application selber.

Mir ist nicht klar warum auf der Entwcklungsrechner funktioniert und auf 
einen anderen nicht, obwohl die notwendige Framwork (4.0) ist schon 
vorhanden.

von Peter II (Gast)


Lesenswert?

Saif K. schrieb:
> Ich bekomme immer einen Fehlermeldung, die besagt dass einen bestimmten
> DLL "not available"

geht nur der Installer nicht oder läuft die Software nicht?
Braucht der Installer überhaupt diese dll, oder erst später das 
Programm?

von Jim M. (turboj)


Lesenswert?

Saif K. schrieb:
> Ich bekomme immer einen Fehlermeldung, die besagt dass einen bestimmten
> DLL "not available"
> was nicht sein kann.

Welche DLL genau?

> Dieses DLL beschreibt die USB Kommunikation zu einer Firmware.

Solche DLLs werden gerne mal erst beim 1. Anstecken des Gerätes "scharf" 
- weil erst da der Treiber wirklich im System installiert wird.

Eventuell hat der externe Entwickler nur Deine Anleitung befolgt: 
"Install Software first!". ;-)

von Saif K. (saif_k58) Flattr this


Lesenswert?

Peter II schrieb:
> Saif K. schrieb:
>> Ich bekomme immer einen Fehlermeldung, die besagt dass einen bestimmten
>> DLL "not available"
>
> geht nur der Installer nicht oder läuft die Software nicht?
die SW läuft nicht

> Braucht der Installer überhaupt diese dll, oder erst später das
> Programm?

Das Programm braucht es das

von Peter II (Gast)


Lesenswert?

Saif K. schrieb:
> Das Programm braucht es das

dann schau im "ProcessMonitor" wo er die dll sucht, Eventuell ist es ja 
keine .net dll sondern eine C++ dll die die passenden Runtime braucht 
und diese auf dem PC nicht installiert ist. Dafür gibt es "depends".

von Saif K. (saif_k58) Flattr this


Lesenswert?

Jim M. schrieb:
> Saif K. schrieb:
>> Ich bekomme immer einen Fehlermeldung, die besagt dass einen bestimmten
>> DLL "not available"
>> was nicht sein kann.
>
> Welche DLL genau?

Es handelt sich um eine DLL der hier im Hause entwicklet wurde und genau 
in diesem DLL wurde der externen DLL (C# ".NET 2.0") geladen und dort 
crash weil was anders kann ich mir nicht vorstellen.
Wie gesagt:
Der geliche Installer wurde auf der Entwcklungsrechner installiert und 
dort funktioniert einwandfrei.

>> Dieses DLL beschreibt die USB Kommunikation zu einer Firmware.
>
> Solche DLLs werden gerne mal erst beim 1. Anstecken des Gerätes "scharf"
> - weil erst da der Treiber wirklich im System installiert wird.

Ja das Stimmt und genau das passiert.
Wenn die SW gestartet wird, sucht als erste die USB verbindung bzw. die 
Verbindug zu Firmware wird geprüft ob es vorhanden ist.

von Saif K. (saif_k58) Flattr this


Angehängte Dateien:

Lesenswert?

Peter II schrieb:
> Saif K. schrieb:
>> Das Programm braucht es das
>
> dann schau im "ProcessMonitor" wo er die dll sucht, Eventuell ist es ja
> keine .net dll sondern eine C++ dll die die passenden Runtime braucht
> und diese auf dem PC nicht installiert ist. Dafür gibt es "depends".

Bei der Installer Projekt ist bei einen Ordner detected dependencies.
Wenn ich diese Ordner ausklappe dann sehe ich folgende:
Microsoft.Net Framwork
HID class.DLL

Wenn ich zwei mal auf der "Microsoft.Net Framwork" dann sehe ich 
folgende seh bitte Anhang.

von Gero (Gast)


Lesenswert?

sicher dass es kein Problem mit unterschiedlichen Pfaden ist?

Das naheliegendste ist doch zu schauen, ob die DLL vom Installer auch 
dort hin kopiert wurde, wo sie erwartet wird - kann ja gut sein dass 
Dein Prog zurecht nicht läuft weil die DLL wirklich fehlt...




was unter XP und 2000 noch "Programme" hieß, ist heute u.a. "Program 
Files" und / oder "Program Files (x86)" - ein alter Installer kann hier 
ausserdem noch Probleme mit Leerzeichen und / oder "(" bekommen
...der Installpfad unter XP hatte beides nicht!


Die ApplicationsFolders des Users sind ja nun auch aufgeteilt - AppData 
- Local - LocalNow - Roaming...

Die Trennung zwischen System, system32 und SysWOW64 sollte man auch 
beachten.

von Peter II (Gast)


Lesenswert?

Gero schrieb:
> Die Trennung zwischen System, system32 und SysWOW64 sollte man auch
> beachten.

ist der 2.PC ein 64bit System? Dann läuft die Anwendung auch als 64bit 
(wenn beim Compiler any-Cpu ausgwählt ist). Dann wird auch eine 64bit 
Dll gebraucht.

von Saif K. (saif_k58) Flattr this


Lesenswert?

Gero schrieb:
> sicher dass es kein Problem mit unterschiedlichen Pfaden ist?
Ja
Ich bin 100% sicher.
Gleiche SW aber halt mit Visual Studio 2008 lauft auf jede rechner 
Windows 7 oder Windows 10 (32/64) einwandfrei.


Einzige was es gemacht wurde, ist dieses projekt in Visual studio 2015 
zu integrieren mehr nicht.

von Arc N. (arc)


Lesenswert?

Saif K. schrieb:
> Für diese SW wurde einen DLL, von einen externen Lieferant angewendet.
> Dieses DLL beschreibt die USB Kommunikation zu einer Firmware.
> Dieses DLL wurde in C# geschrieben und das war mindesten vor 10 Jahre.
> Dieses DLL wurde mit Framwork Version (.NET) 2.0 erstellt.
> Den Sourcecode haben wir leider nicht und der externe lieferant
> existiert auch nicht mehr.

Wenn die DLL nicht extrem umfangreich ist, dann sollte einer der 
Decompiler und etwas Handarbeit reichen
https://www.jetbrains.com/decompiler/
oder
http://www.telerik.com/products/decompiler.aspx
https://github.com/telerik/JustDecompileEngine
https://github.com/telerik/justdecompile-plugins

Abhängigkeiten
http://www.dependencywalker.com/
und/oder
https://github.com/mikehadlow/AsmSpy

von Arc N. (arc)


Lesenswert?

Saif K. schrieb:
> Gero schrieb:
>> sicher dass es kein Problem mit unterschiedlichen Pfaden ist?
> Ja
> Ich bin 100% sicher.
> Gleiche SW aber halt mit Visual Studio 2008 lauft auf jede rechner
> Windows 7 oder Windows 10 (32/64) einwandfrei.
>
>
> Einzige was es gemacht wurde, ist dieses projekt in Visual studio 2015
> zu integrieren mehr nicht.

Das hört sich so an als ob irgendwas eine VC++Runtime referenziert, die 
vom VS mitinstalliert wird...
https://en.wikipedia.org/wiki/Microsoft_Windows_library_files#MSVCRT.DLL.2C_MSVCP.2A.DLL_and_CRTDLL.DLL
Kurzfassung: Bis 14.0 irgendwas mit MSVCR{version}.dll, danach 
VCRUNTIME{version}.dll

von Peter II (Gast)


Lesenswert?

Arc N. schrieb:
> Das hört sich so an als ob irgendwas eine VC++Runtime referenziert, die
> vom VS mitinstalliert wird...
> 
https://en.wikipedia.org/wiki/Microsoft_Windows_library_files#MSVCRT.DLL.2C_MSVCP.2A.DLL_and_CRTDLL.DLL
> Kurzfassung: Bis 14.0 irgendwas mit MSVCR{version}.dll, danach
> VCRUNTIME{version}.dll

dafür gibt es ja wie oben schon geschrieben "depends". Aber wenn 
wirklich alles .net ist, gibt es keine Verbindung zu dieser Runtime.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.