Installer auf dern Entwicklungrechner funktioniert und auf andere nicht

OP #5081415
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.
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!". ;-)
OP
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.
OP
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.
Angehängte Dateien:
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.
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
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
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.