vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Portable Software 
Autor: Marty**
Datum: 19.05.17 18:30

Hallo Forum,

über mehrere Jahre habe ich mir mehre kleine Helferlein gebastelt. Teilweise nur ein paar KB groß.
Habe jetzt alles als Ressource in eine Anwendung eingebunden.
Wie kann ich die einzelnen Anwendungen vom USB-Stick aus starten. Möchte nichts auf der Festplatte haben.
Soll Stickware bleiben.

Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Manfred X
Datum: 19.05.17 18:58

Hallo!

[I]über mehrere Jahre habe ich mir mehrere kleine Helferlein gebastelt.
Teilweise nur ein paar KB groß.
Habe jetzt alles als Ressource in eine Anwendung eingebunden.[/I]

Was genau bedeutet "Ressource" in diesem Zusammenhang?
Sind diese "Helferlein" als eine oder mehrere Net-Assemblies erstellt worden?

Ein gut gesichertes Windows-System oder Netzwerk sollte den Start von nicht-
installierten Programmen durch einen gewöhnlichen Nutzer (User oder Guest)
verhindern.

Davon abgesehen:
Das Zielsystem muß das entsprechende Net-Framework enthalten (Windows-Bestandteil).
Eine einfache Exe kann dann direkt gestartet werden.
Erforderliche "Zusatz-Bestandteile" (Bibliotheken, Ressourcen, Dateien) müssen
ggf. geeignet eingerichtet sein.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Marty**
Datum: 19.05.17 19:32

Ressource bedeute über Ressourcen hinzufügen, vorhande Datei hinzufügen, exe hinzugefügt.

Da das ganze ja nur für mich gedacht ist, sollte sich alles ausführen lassen.
Möchte halt einfach alles in einer Anwendung vereint haben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Manfred X
Datum: 19.05.17 19:40

Hallo!

Das Einfügen einer Exe-Datei in ein Projekt fasst nichts zusammen.

Du mußt den Quellcode der Hilfsprogramme in Dein Projekt aufnehmen,
ein Deckformular erstellen, von dem aus die einzelnen Programmteile
(Formulare o.ä.) gestartet werden können und dieses Projekt zu einer
Exe-Datei kompilieren.

Es kommt im Rahmen von Sicherheitseinstellungen nicht darauf an,
für wen das Programm gedacht ist, sondern welche Rechte Du auf
dem Zielsystem gemäß Anmeldung besitzt.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Marty**
Datum: 19.05.17 20:09

Den Quellcode der Hilfsprogramme ist ja zum Teil nicht mehr vorhanden. Eben nur die fertige Exe.

Gibt es keine Möglichkeit ala

 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
  Button1.Click
        Process.Start("My.Resources.Anwendung1")
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Manfred X
Datum: 19.05.17 21:51

Hallo!

Du benötigst keine Ressourcen, sondern kannst die Exe
durch Process.Start direkt starten.

Net-Assemblies können übrigens normalerweise decompiliert und
der Quell-Code dadurch zurückgewonnen werden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Marty**
Datum: 20.05.17 06:32

Aber ich hätte doch gerne nur eine Datei.
Darum dachte ich ich pack sie als Ressource rein.
Gibt es denn da kein Möglichkeit ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Manfred X
Datum: 20.05.17 10:10

Machbar ist irgendwie alles.
Allerdings werden Ressourcen gewöhnlich nicht direkt innerhalb
einer Exe-datei verwaltet.

Auf die Schnelle ...
Du lädst die Exe als Bytearray.
Du wandelst das Bytearray in eine komma-separierte Zeichenfolge
und nimmst diese Zeichenfolge als String in Deine Exe-Datei auf.
Zur Laufzeit verwandelst Du diese Zeichenfolge wieder in eine Bytefolge (Array).

Eventuell kannst Du das Bytearray auch direkt als Resource einbetten.

Die möglichen weiteren Schritte findest Du hier ...
http://stackoverflow.com/questions/2977135/run-program-from-byte-array
Ich habe es nicht ausprobiert.

Ein anderer Weg ist das Speichern dieser Bytefolge als temporäres Exe-File,
aber das möchtest Du wohl nicht.

Einfacher wäre es, diese Exe-Dateien zu disassemblieren und den zurückgewonnenen
Quell-Code in einem Projekt zusammen zu fassen.

Beitrag wurde zuletzt am 20.05.17 um 10:24:44 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Kleines Beispiel (Exe als Ressource) 
Autor: Manfred X
Datum: 20.05.17 10:55

Erstellung einer Assembly (Windows.Forms.Form als Startformular):
Die ausführbare Datei nennt sich TestExe.Exe
Public Class frmTest
    Dim WithEvents btn As New Button _
    With {.Parent = Me, .Text = "Click!"}
 
 
    Private Sub frmTest_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
        Me.Size = New Size(200, 100)
        Me.TopMost = True
    End Sub
 
 
    Private Sub btn_Click(sender As Object, e As System.EventArgs) Handles _
      btn.Click
        MsgBox("Click ist betätigt worden")
    End Sub
 
End Class
Die Exe-Datei dieser Anwendung kann als ByteArray-Ressource eingebettet werden.
Zur Laufzeit sei "Bytes" ein Byte-Array, das diese Ressource aufnimmt.
Option Strict Off
 
'Assembly erstellen
Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.Load(bytes)
'Eine Instanz des Startformulars 
Dim frmTest As Object = asm.CreateInstance("TestExe.frmTest")
'Startformular laden und zeigen 
frmTest.show()
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: effeff
Datum: 20.05.17 23:30

http://stackoverflow.com/questions/4217967/extract-exe-resource-and-run-it-in-visual-basic

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: Manfred X
Datum: 21.05.17 08:12

Die z.B. als Bytefolge eingebettete Exe-Datei soll aber direkt -
also ohne temporäre Zwischenspeicherung auf dem Stick oder im System -
ausgeführt werden, (falls ich das Thema richtig verstanden habe).

Das kann man - wie gezeigt - meist über "System.Reflection" irgendwie
realisieren, falls es sich um Net-Assemblies handelt.

Sonst könnten diese Exe-Dateien einfach auf den Stick kopiert
und z.B. durch "Process.Start" ausgeführt werden.
Die Einbettung als Ressource wäre ein sinnloser Zwischenschritt.

Beitrag wurde zuletzt am 21.05.17 um 08:23:36 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Portable Software 
Autor: effeff
Datum: 21.05.17 10:04

Oder, wie Du schon geschrieben hast, ein einziges Programm mit aller Funktionalität erstellen; So eine Art eierlegende Wollmilchsau...

Vielleicht geht Marty** davon aus, dass per GPO geblockte Programme ausführbar sind, wenn Sie direkt aus Ressourcen geholt werden? Das wird aber nicht klappen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Kleines Beispiel (Exe als Ressource) 
Autor: Tommi467
Datum: 30.05.17 10:04

Hallo Manfred,

in der Zeile

Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.Load(bytes)

bekomme ich für bytes eine Fehlermeldung:

"bytes" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.

Kannst du bitte noch einmal helfen...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Kleines Beispiel (Exe als Ressource) 
Autor: Tommi467
Datum: 30.05.17 10:41

Hat sich erledigt, hab es selbst rausgefunden:

vor 'Assembly erstellen kommt z.B.

 Dim bytes As Array
 bytes = loadFile("C:\TestExe.exe")
und dann noch diese Function

    Function loadFile(filename As String) As Byte()
        Dim fs As New FileStream(filename, FileMode.Open)
        Dim buffer(CInt(fs.Length)) As Byte
        fs.Read(buffer, 0, buffer.Length)
        fs.Close()
 
        Return buffer
    End Function 'loadFile
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Kleines Beispiel (Exe als Ressource) 
Autor: Manfred X
Datum: 30.05.17 11:11

Hallo!

Wenn Du die Datei als Ressource in das Projekt einbettest, erhälst Du
bei Abfrage durch My.Resources.... direkt ein Bytearray:
Dim bt As Byte() = My.Resources.TestExe
(Falls die Ressource als TestExe bennant worden ist.)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel