begin process at 2012 02 14 21:30:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

ActiveX / COM

 > 

WindowsInstaller en .net


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

WindowsInstaller en .net

lundi 24 juillet 2006 à 21:00:46 | WindowsInstaller en .net

ShawLee

Bonjour,

je developpe en vb .net sur Windows 2000 et XP, et je suis confronté à un problème concernant l'utilisation de la dll "msi.dll"

Dès que je veux instancier l'objet, il génère à l'exécution une erreur .
Pourtant le même code fonctionne bien sous VBA et VB6
Si quelqu'un pouvait bien m'en donner l'explication, et comment contourner ce problème, cela m'aiderait énormement

D'autres part, y a-t-il des contraintes à l'utilisation d'une dll créé en VB6 sous Windows XP ?

Merci d'avance pour les réponses.
ShawLee

Ps : voici un exemple de code.

Public Function MSI_Connect(MsiFile As String)
    Set MSI_Obj = CreateObject("WindowsInstaller.Installer")
    Set MSI_DB = MSI_Obj.OpenDatabase(MsiFile, 0)
      
End Function

Sub GetProductCode()
Call MSI_Connect("MySetup.msi")

Dim sqlQuery As String
Dim i, index As Integer

sqlQuery = "SELECT Property, Value FROM Property WHERE Property='ProductCode'"

Set MSI_View = MSI_DB.OpenView(sqlQuery)
MSI_View.Execute
i = 1

Set MSI_RecordSet = MSI_View.Fetch
While Not MSI_RecordSet Is Nothing
  For index = 0 To MSI_RecordSet.FieldCount
    msgbox  MSI_RecordSet.StringData(index)
  Next
  i = i + 1
  Set MSI_RecordSet = MSI_View.Fetch
Wend

End Sub

mardi 25 juillet 2006 à 08:23:01 | Re : WindowsInstaller en .net

Drikce06

Membre Club
Salut
Déjà ce que je peux te dire c'est que l'instruction Set n'est pas nécessaire en .Net.

 Drikce 06
mardi 25 juillet 2006 à 09:35:45 | Re : WindowsInstaller en .net

drahcir

Salut,

ça ressemnble plus à du vb6 que du VB.NET!!!!

Le Set est en effet inutle, tout comme le Call... bref, là n'est pas la question.....

Quelle est ton erreur exactement?

mardi 25 juillet 2006 à 12:01:19 | Re : WindowsInstaller en .net

ShawLee

En effet c'est du VB6. Je me suis trompé dans le copier-coller.

En fait, lorsque j'essaie d'instancier en vb.net une classe de msi.dll (par exemple installer)

Lorsque je tape

Dim myObj as windowsinstaller.installer

myObj = new windowsinstaller.installer

L'application génère une erreur à la compilation. Ce qui parait normal car cette dll ne contient que des interfaces.

J'ai voulu passer alors par 'createobject("windowsinstaller.installer")'. Et là, si l'exe est bien compilé, à l'execution, il génère l'erreur 'impossible de créer le composant activeX'.

Pas grave me dis-je, je vais contourner le problème en créant une dll en VB6, puis je vais l'importer via tlbimp. Là tout se passe bien, sauf que par la suite mon appli ne marche que sur des postes windows2k et non sur des postes XP ( si par exemple ma dll importée s'appelle msinet.dll qui contine la classe 'msiClass' l'erreur se déclenche à myClass = new msinet.msiClass l'instanciation d'une classe)  .

Ce qui m'a fait penser que XP n'aime pas trop les dll deVB6 ou quelque chose m'echappe. 

En résumé,il y a deux problèmes dans cette histoire et si quelqu'un avait la réponse à l'une des deux, cela me conviendrait (même si jaurais préféré utiliser la classe installer sans passer par VB6.

Merci d'avance pour ta réponse.



Cette discussion est classée dans : set, recordset, view, msi, windowsinstaller


Répondre à ce message

Sujets en rapport avec ce message

filtrer une requete à partir de vba [ par agnes ] salut à tousvoici mon pbdepuis a peu pres un mois je complete une base de données qui a tété crée par qq1 d'autresdonc je dois faire un filtre dans un pb à l'ouverture d'un recordset [ par ron ] Comment ouvrir un recordset sur une requete avec access2000? Dim db As Database Dim RstFichier As Recordset Set db = CurrentDb Set RstFichier = db.Ope Erreur 424 avec un recordset [ par Mdeffontaines ] Voici mon code (trouvé sur le forum)Dim MaBD As DatabaseDim MonRS As RecordsetSet MaBD = DBEngine.OpenDatabase("C:\Test\personnel.mdb", True, True)Set Requete SQL sur un Recordset [ par PaulScholes ] J'ai une table, dans laquelle, je veux faire 2 requêtes successives, une requete pour la periode, une autre pour le nom de l'entreprise, je suis oblig datagrid reste vide [ par pink ] bonjour,est ce que quelqu'un peut me dire le probleme de ce code ? mon datagrid ne se rempli pas... j'ia vu des exemples de code ou on specifie direct combobox vb6 recordset [ par neo3015 ] y a t il moyen dans vb6 de lier une combo box et un record set?sous acces et vba on faitset combo1.recordset = rst 'ou un truc comme camais sous vb6 recordset [ par chili ] Bonjour a tous,Je desire afficher la totalité d'un recordset dans une mshflexgrid, or je ne parvient a n'afficher que la premiere ligne, mon code est recordset deconnecté + creation dynam datareport [ par kick71 ] Bonjour,J'ai un probleme entre l'utilisation d'un Rs + ouverture d'un data-report avec ce RS :Si j'ai un état (ReprotSet) standard, sans regroupement


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,732 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales