Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 21.06.16 21:51 
Hallo,
ich habe eine Anwendung, die erst ohne ein weiteres Plugin laufen soll. Dann soll ein Download durchgeführt werden, in dem dieses Plugin gedownloadet wird. Und dann soll gleich mit dem Plugin weitergearbeitet werden. Geht das?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4449
Erhaltene Danke: 917


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 21.06.16 21:56 
Ja.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 21.06.16 22:11 
Lass mich raten. Irgendwie über [DLLImport ("")] ?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4449
Erhaltene Danke: 917


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 21.06.16 22:15 
Eher nicht. Mehr sowas aus der Assembly.Load Ecke. Das ist aber auch nur ein Baustein.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1204
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: Di 21.06.16 23:36 
Ich würde das allerdings nicht machen.

Wenn Plugins zur Laufzeit geladen werden sollen, dann erhöht das den Verwaltungs-Aufwand dieser Plugins und auch der Rest der ganzen Anwendung muss über jede Änderungen bei den Plugins informiert werden.

Ich sehe auch keinen Vorteil dabei, Plugins zur Laufzeit zu laden.
Ist zwar eine ganz nette Vorstellung, aber ich denke, in den meisten Fällen wird ein Neustart der Anwendung erzwungen, die Nutzer kennen das also.
Außer kannst Du zeitgleich erzwingen, dass ungeänderte Daten gespeichert werden um Konflikte und Beschädigungen von aktuell bearbeiteten Daten zu verhindern.

Die Plugins müssten dann nur einmal beim Start der Anwendung geladen werden, alle Bestandteile können diese Plugins einmal integrieren und müssen sich später nicht mehr darum kümmern.
Abgesehen davon gibt es Frameworks, die bei sowas sehr helfen. Unity bietet z.B. eine Möglichkeit, die Inhalte des IoC-Containers aus der Config zu laden und es gibt Frameworks wie MEF oder Prism.
Viele Möglichkeiten, die deine Arbeit auf das Definieren der Plugin-API und ihre Einbindung beschränken würden, das Verwalten der Plugins kann dann mit wenig Aufwand durch solche Frameworks übernommen werden.

Ich persönlich mag ja Unity ganz gerne. Für kleine "Plugins", sprich die Implementierung von Interfaces aus anderen DLLs, reicht das völlig aus und wird von Unity beinahe eigenständig übernommen.
Prism dagegen ist für komplexe Plugins besser geeignet, benötigt aber auch mehr Aufwand für die Integrierung in der Anwendung, da es eine eigene Herangehensweise fordert, nimmt dabei aber auch bei der Verwaltung von Plugins mit UI-Komponenten viel Arbeit ab.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mi 22.06.16 14:10 
Letzendlich handelt es sich hier um ein Setup Programm. Ich möchte dem Benutzer dafür nur eine .exe schicken, ohne irgendwelche anderen Dateien. Hat der Benutzer sich nun alle Informationen durchgelesen / bestätigt, soll ein Download durchgeführt werden. In diesem Download werden dann alle Dateien geladen, die das Hauptprogramm zum arbeiten benötigt. In der Setup .exe kann der Benutzer dann auswählen, ob eine Verknüpfung auf dem Desktop erstellt werden soll.

Ich habe mich über Verknüpfungen schon informiert und weiß daher, dass man dafür noch ein Plugin benötigt. Dieses Plugin soll dann beim Download mit heruntergeladen werden und gleich ausgeführt werden. Und nur wegen dieser Verknüpfung brauche ich dieses Plugin. Danach kann die .dll wieder gelöscht werden.

Wie mache ich das?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4449
Erhaltene Danke: 917


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 22.06.16 15:43 
Das Stichwort ist hier dann eher Bootstrapper und nicht Plugin.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mi 22.06.16 15:57 
Und wie mache ich das so, dass die Verknüpfung erstellt wird?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 22.06.16 16:15 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4449
Erhaltene Danke: 917


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 22.06.16 17:10 
Ein Setup schreiben sollte man vielleicht eher einem expliziten Tool überlassen das das kann. Z.B. ein MSI erstellen ist kein Kleinkram/ und selbst wenn einem MSI egal ist ist es immer noch einfacher ein simples Setup zum Beispiel mit Innosetup zu schreiben das ein anderes normales Setup runterlädt und das dann ausführt.
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mi 22.06.16 17:21 
Zum Thema Eigeninitiative: ich weiß, dass man für Verknüpfungen WshShell braucht, aber wenn man das nimmt, braucht man eine DLL und diese DLL wollte ich mir dann downloaden und noch nutzen.

Ralf Jansen: Ein Programm, das Lizenzen ausgeben kann und Daten downloaden und anschließend irgendwo einfügen kann, kann ich auch schon schreiben. Mit MSI wirkt es sicherlich professioneller, aber dafür braucht man dann auch wieder viel Zeit, die ich momentan nicht haben.

Wie macht man es jetzt? Angenommen ich habe die WshShell jetzt schon gedoenloaded. Wie binde ich diese jetzt ein bzw. führe den dazugehörigen Code aus?

[EDIT] Jetzt habe ich eine Idee: vielleicht eine Kosolenanwendung schreiben, in der WshShell referenziert wurde, und diese wird dann gedownloaded und geluncht, wenn der Benutzer ein Desktop Shortcut haben will. Was meint ihr dazu?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 22.06.16 18:57 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Mi 22.06.16 22:38 
Wenn ich mir WshShell dowloade, bekomme ich ja eine .dll Datei mitgeliefert, die ich benötige. Im COM Assemblykasten finde ich nichts derartiges. Also hätte ich jetzt noch eine andere Idee: eine Klasse, in der die DLL referenziert ist. Wenn der Download dann erfolgreich durchgeführt wurde, wird die Klasse instanziert und dann müsste es ja eigentlich funktionieren, oder?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.06.16 00:24 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: erfahrener Neuling
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 23.06.16 11:38 
Okay. Vielen Dank für die mehr oder weniger nette Antwort

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 23.06.16 14:46 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Do 23.06.16 15:39 
Also ich habe mich auch darüber informiert (schon vor ein paar Monaten) und bin auf WshShell gestoßen. Da ich immer schon vorher etwas raussuche, was ich später eventuell in meinen Projekten verwenden kann, dachte ich man braucht auch eine DLL, was aber nicht so ist. Ist ja aber jetzt egal, ich möchte keinen Streit hier im Forum anfangen. :nixweiss:

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein