| |
VB.NET - Ein- und UmsteigerPortable 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ß | |
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. | |
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. | |
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. | |
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 | |
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. | |
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 ? | |
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. | |
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() | |
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. | |
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... | |
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 | |
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.) | |
| 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 |
|
|
sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|