[VB10].dll's in .exe einbinden will nicht funktionieren.

09/26/2012 05:29 •kяyteя•#1
Haii Com.,

ich versuche mich derzeit an einem Patcher und
alles läuft soweit auch wunderbar.
Das einzige Problem was ich habe ist, wenn ich die
.exe jetzt an jemand anderen verschicken möchte
öffnet sich diese bei demjenigen nicht.
Es erscheint auch keinerlei Fehlermeldung.

Die Ursache habe ich jedoch bereits ausfindig gemacht,
es liegt an nicht vorhandenen .dll's die für das Programm
notwendig sind.
Die .dll's sind von .Net Framework 4.0.
Nun was ich nicht verstehe:

.Net Framework 4.0 ist auf dem Computer des anderen
installiert, trotzdem funktioniert das ganze nicht.
Ich habe schon versucht die .dll's in die .exe zu
packen sprich, Verweise erstellt (Lokale Datei auf True),
in Resourcen eingebunden und dann als neue Klasse
(My Project -> Anwendung -> Anwendungsereignisse anzeigen)
folgendermaßen reingeschrieben:

Code:
        Private WithEvents Domaene As AppDomain = AppDomain.CurrentDomain
        Private Function Domaene_AssemblyResolve(ByVal sender As Object, ByVal args As System.ResolveEventArgs) As System.Reflection.Assembly Handles Domaene.AssemblyResolve
            If args.Name.Contains("Microsoft_VisualBasic_PowerPacks_Vs") Then
                Return System.Reflection.Assembly.Load(My.Resources.Microsoft_VisualBasic_PowerPacks_Vs)
            ElseIf args.Name.Contains("System") Then
                Return System.Reflection.Assembly.Load(My.Resources.System)
            ElseIf args.Name.Contains("System.Data") Then
                Return System.Reflection.Assembly.Load(My.Resources.System_Data)
            ElseIf args.Name.Contains("System.Data.DataSetExtensions") Then
                Return System.Reflection.Assembly.Load(My.Resources.System_Data_DataSetExtensions)
            ElseIf args.Name.Contains("System.Deployment") Then
                Return System.Reflection.Assembly.Load(My.Resources.System_Deployment)
            ElseIf args.Name.Contains("System.Drawing") Then
                Return System.Reflection.Assembly.Load(My.Resources.System_Drawing)
            ElseIf args.Name.Contains("System.Windows.Forms") Then
                Return System.Reflection.Assembly.Load(My.Resources.System_Windows_Forms)
            ElseIf args.Name.Contains("System.Xml") Then
                Return System.Reflection.Assembly.Load(My.Resources.System_Xml)
            ElseIf args.Name.Contains("System_Xml_Linq") Then
                Return System.Reflection.Assembly.Load(My.Resources.System_Xml_Linq)
            Else
                Return Nothing
            End If
        End Function
Ergebnis ist jedoch immer noch das selbe,
Programm lässt sich bei anderen nicht öffnen.

Bei mir läuft alles ganz normal.

Hat jemand einen Rat?
09/26/2012 09:59 -PinkiWinki-#2
Die Leute müssen "Microsoft Visual Basic Power Packs" installieren, wenn du dieses in deinem Programm verwendest.
09/26/2012 18:15 •kяyteя•#3
Und welche Version?
Oder ist das egal?
09/26/2012 19:13 -PinkiWinki-#4
Die Version die du verwendest in deinem Programm, wahrscheinlich neuste. Oder du schickst die PowerPack DLL/DLLs mit(Ich arbeite damit nicht, also weiß ich nicht wie viel DLLs dort dabei sind), das sollte auch reichen.
09/26/2012 19:31 •kяyteя•#5
Okay danke dir, ich habs :)
Für andere die vllt mal ne Lösung darauf brauchen:

Unter
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\VBPowerPa cks\de
befindet sich eine .exe, diese müsst ihr an andere
User verschicken, dann geht alles wunderbar. :)