Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB.NET] .DLL maken voor custom action voor VSTO*

Pagina: 1
Acties:

  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 11-11 07:41
Ik ben nu al een tijdje aan het zoeken en ik kom er niet helemaal uit.

Ik wil graag een vrij simpele DLL maken voor een custom action in een WiX installatie. Dit zou ik het liefst doen met VS2005 aangezien die hier al aanwezig is (VSTO uitvoering, dus alleen VB en C#) in Visual Basic omdat ik daarmee bekend ben.

Ik kan wel voorbeelden vinden van het maken van een DLL met C++ e.d. maar dat is niet aanwezig ni de VSTO uitvoering en ik zou graag binnen VB blijven. Ik heb al wat geprobeerd met de template voor een ClassLibrary maar die krijg ik niet goed werkend.
Is het mogelijk om een goede DLL te maken met VB en zo ja hoe doe ik dat in VSTO? Het liefst zou ik ergens een tutorial of voorbeeld vinden waarmee ik verder kan. Dan kan ik vanuit daar weer verder leren, maar nu loop ik even vast in alle info die ik al gevonden heb.

Was ik maar een punt dan was ik het einde


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
VB.NET bedoel je veronderstel ik.
Welke info heb je al gevonden ? Waar loop je precies vast ?
We willen je hier best proberen te helpen, maar dan moet je wel wat info geven; gewoon vragen om een tutorial is niet echt de bedoeling. Die kan je zelf zoeken, en als je die zelf niet vind, dan is het niet de bedoeling om anderen dit voor jou te laten zoeken

[ Voor 83% gewijzigd door whoami op 17-09-2007 10:42 ]

https://fgheysels.github.io/


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Misschien moet je eerst eens de requirements van Wix extentions lezen.

Wix werkt nog met .NET 1.1, maar VS2005 creert .NET 2.0 dll's. Je zult dus de dll in VS2002 (standaard /NET 1.0, maar met update ook 1.1) of VS2003 (zowel 1.0 als 1.1) moeten realiseren.

Aangezien vrijwel op elke machine waarop het 2.0 framework staat, ook het 1.1 framework aanwezig is, zou je eventueel handmatig (of gebruikmakend van Nant) de vbc.exe (VB Compiler) kunnen aanroepen. Echter, je kunt dan niet gebruik maken van generics, anonymous methods, etc.

If it isn't broken, fix it until it is..


  • __fred__
  • Registratie: November 2001
  • Laatst online: 29-11 20:34
Niemand_Anders schreef op maandag 17 september 2007 @ 10:43:
Misschien moet je eerst eens de requirements van Wix extentions lezen.

Wix werkt nog met .NET 1.1, maar VS2005 creert .NET 2.0 dll's. Je zult dus de dll in VS2002 (standaard /NET 1.0, maar met update ook 1.1) of VS2003 (zowel 1.0 als 1.1) moeten realiseren.

Aangezien vrijwel op elke machine waarop het 2.0 framework staat, ook het 1.1 framework aanwezig is, zou je eventueel handmatig (of gebruikmakend van Nant) de vbc.exe (VB Compiler) kunnen aanroepen. Echter, je kunt dan niet gebruik maken van generics, anonymous methods, etc.
Als je gebruik maakt van WiX 3.0 (unstable) kun je VS2005 gebruiken. Versie 3 is namelijk gemaakt met versie 2.0 van het framework.

  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 11-11 07:41
Ik ben al druk aan het zoeken geweest naar tutorials. Ik kon echter bijna alleen maar dingen vinden voor VB6 en alle problemen die daar optreden.

Wat ik al wel weet is dat met VS2005 altijd managed DLL's gemaakt worden. (misschien even goed hier te vermelden dan mijn programmeeropleiding vooral zelfstudie geweest is en dan voor VBA, dus als ik woorden verkeerd gebruik hoor ik dat graag). Nu moet ik tot mijn schande toegeven dat ik een deel van de WiX tutorial niet goed gelezen heb :X :z. Hier wordt namelijk al een heel deel van mijn vraag beantwoord; dat het heel onverstandig is om te werken met managed DLL's. Ik moet dus een "echte" DLL gaan maken in C of C++.

Mijn hoofdvraag was eigenlijk of het wel/niet mogelijk is wat ik wil. Zo ja dan had ik graag willen weten waarop ik dan wel had moeten zoeken (of misschien toch graag een klein voorbeeldje gehad). Maar voor nu staan voor mijn vooral de volgende vragen open:

Maakt VS2005 altijd een managed DLL? Ook als ik in C++ zou programmeren? Of moet ik hiervoor dan ook gaan werken met een andere compiler?

Was ik maar een punt dan was ik het einde


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

WiX in een 'managed' applicatie. In .NET kun je alleen c++ dll's gebruiken via het DllImport attribute. Dynamisch gebruik zou eventueel kunnen via de CodeDom namespace, maar ik vermoed dat WiX alleen met managed dll's overweg kan.

Volgens Fred is WiX 3.0 op basis van .NET 2.0 en daar zou je dus je uitbereiding kunnen testen. VS2005 is slechts een development omgeving. VS bied standaard support voor VB.NET, c#, j# en C++(.net).

Alleen met c++ kun je een unmanaged dll's maken. De WiX website bevat een aantal tutorials en handleidingen. Als je primaire voorgrond voornamelijk VBA is, dan raad ik je af om unmanaged dl''s te gaan schrijven, want dan moet je namelijk ook direct aan memory- en resources management gaan doen. Ik denk in jouw geval dat een dll welke je via VB.NET schrijf sneller en eenvoudig is.

If it isn't broken, fix it until it is..


  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 11-11 07:41
Dit is een stukje tekst dat ik gevonden heb in de WiX 2.0 tutorial.
A common question is whether custom actions can be written in managed code, C#, VB.NET or something similar. After all, these runtime environments offer a much richer set of features, besides, some programmers working with these languages are not that familiar at all with other, more classical programming languages.

Theoretically, the answer is yes, although its not very straightforward as .NET compilers cannot directly generate DLLs with stdcall-style exported functions. Thus, a helper DLL has to be used to bridge the gap between the installer and the managed DLL.
...
Dit was dus ook mijn bron aangaande de managed DLL's e.d. Er staan verder nog meer redenen bij om het niet op die manier uit te voeren.

Ik ben al wel eerder met 3.0 bezig geweest maar miste hier toen de tutorial nogal die ik voor 2.0 best goed vindt. De documentatie voor WiX 3.0 is voor mij nog wel summier. Ik ga nog maar eens bestuderen wat daar allemaal bij komt kijken.

Was ik maar een punt dan was ik het einde


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Dus eigenlijk wil je een uitbreiding voor MSI schrijven ipv WiX. WiX genereerd een MSI package en jij wilt iets toevoegen aan de MSI package. Ik was eigenlijk in de veronderstelling dat je een add-on voor WiX wou schrijven.

If it isn't broken, fix it until it is..


  • J_Davelaar
  • Registratie: Maart 2001
  • Laatst online: 11-11 07:41
Niemand_Anders schreef op maandag 17 september 2007 @ 16:55:
Dus eigenlijk wil je een uitbreiding voor MSI schrijven ipv WiX. WiX genereerd een MSI package en jij wilt iets toevoegen aan de MSI package. Ik was eigenlijk in de veronderstelling dat je een add-on voor WiX wou schrijven.
Inderdaad. Whoami heeft later de titel nog gewijzigd. Ik weet alleen niet precies wanneer. Maar het gaat om een custom action voor in de installatie. Deze zijn blijkbaar altijd een unmanaged DLL.

In de voorbeelden die meegeleverd worden met WiX2.0 zit een voorbeeld van een custom action voor het printen van de EULA. Met deze ga ik nu verder werken om te kijken of het gaat lukken mijn eigen dll te maken. Verder ook maar eens wat boeken opsnorren over C++. Ben het wel eens eerder aan het leren geweest maar had toen geen echt doel.

Was ik maar een punt dan was ik het einde

Pagina: 1