begin process at 2012 02 12 17:02:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > INSTALLATIONDE PACKAGE MSI AVEC WINDOWS INSTALLER

INSTALLATIONDE PACKAGE MSI AVEC WINDOWS INSTALLER


 Information sur la source

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Niveau :Initié Date de création :25/05/2004 Vu :18 723

Auteur : BLU

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour,

Ce Tips à pour but de montrer les possibilités d'installation avec le nouveau Service Windows Installer et sa référence incluse dans un projet VB.

Source

  • Essayez cette méthode en ajoutant dans votre projet la référence
  • "Microsoft Windows Installer Object Library" qui pointe sur Msi.dll (C:\Windows\System32 Sous XP ou C:\WinNT\system32 sous 2000 et NT4)
  • puis dans le code :
  • Set ObjMSI = CreateObject("WindowsInstaller.Installer")
  • ObjMSI.InstallProduct MSIPathFile(Ici une string), PropertyValue(Ici une string)
Essayez cette méthode en ajoutant dans votre projet la référence
"Microsoft Windows Installer Object Library" qui pointe sur Msi.dll (C:\Windows\System32 Sous XP ou C:\WinNT\system32 sous 2000 et NT4)

puis dans le code :

Set ObjMSI = CreateObject("WindowsInstaller.Installer")
ObjMSI.InstallProduct MSIPathFile(Ici une string), PropertyValue(Ici une string) 


 Conclusion

En théorie cela doit le faire.

Pour PropertyValue on peut mettre "ADDLOCAL=All ACTION=INSTALL"


Avec cette Dll, il est donc possible de concevoir sa propre interface basée sur un fichier MSI.

Bonne prog. à tous

A+
Blu


 Sources du même auteur

Source avec Zip Source avec une capture CALCULER UNE IP DE BROADCAST

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

Commentaires et avis

Commentaire de tich3012 le 25/05/2004 13:40:01

ben et le source???

Commentaire de thierrydelepine le 25/05/2004 14:21:05

Pourrait tu donner plus d'explications ou un petit bout de code d'exemple, cela me parait interressant mais j'aimerai en savoir plus sur les possibilitées de cet ajout de reference.
De ce que je comprend on peut lancer la diffusion d'un package MSI en une ligne de code VB ??

Merci.

Commentaire de Napster le 25/05/2004 22:29:27

manque la source pour mieux visualisez ,(mieux codez mieux visualizes............ben fait  une petit source .

Commentaire de jmlucienvb le 26/05/2004 07:40:47

Tu as mis l'eau à la bouche...
Reste à verser le liquide !

Commentaire de DARKSIDIOUS le 26/05/2004 08:21:13 administrateur CS

Cela suffit ? En tout cas, je conseille d'utiliser InnoSetup pour créer des installation, c'est très simple, très puissant, et c'est gratuit !

DarK Sidious

Commentaire de jmlucienvb le 26/05/2004 08:43:46

Salut Dark...En forme je vois !
Je vais télécharger innosetup pour essayer...connaisais pas !
Amitiés
Jmluc

Commentaire de Bazinou le 26/05/2004 09:26:50

Oui, il est vrai qu'InnoSetup est très bien. Je conseille également ISTool (interface graphique d'InnoSetup) et InnoScript. Ce dernier permet de générer des .iss (projet InnoSetup) depuis un .vbp ou un .lst. Perso je préfère travailler depuis le .lst généré par l'Assistant Empaquetage & déploiement de VB.

++

Bazinou

Commentaire de BLU le 26/05/2004 22:04:15

J'avoue  ...
Au départ il s'agissait en fait d'une réponse à une question mais la date du post était de 2003 ...
Au dernier moment j'ai préféré le pousser en trucs et astuces sur le site. Je ne pensais pas vraiment attirer autant de commentaire.

Pour ceux que cela intéresse en fait un fichier MSI n'est pas autre chose qu'une base de données.
Elle stocke entre autre l'arborescence, les fichiers, les dll, la registerie, les icônes et shurtcut, les ODBC ... d'une application a installer. Avec un peu de SQL et les objets, méthodes, propriétés exportés par MSI.DLL un peu obtenir une interface comme décrit dans la capture.

Je sort juste de formation sur AdminStudio d'InstallShield (Effectivement produit payant mais dans le cadre de grande société, le setup dit classique ne suffit pas. ), je commence tout juste le soft que je montre en capture. De plus Windows Installer propose le principe du roll back pendant l'installation et surtout l'autoréparation en cas de problème.

Il reste encore beaucoup de choses a coder : seul les deux premiers onglets sont codés.

Ceux qui veulent vraiment le source n'ont qu'à me demander par mail.
J'vois pas trop l'intérêt de mettre la source pour l'instant en ligne tant qu'elle n'est pas plus avancée.

Désolé d'avoir mis l'eau à la bouche pour certain ...

Sinon la base du code est du genre
'Penser a rajouter la référence MSI.DLL dans votre projet

Global MSI_DB As WindowsInstaller.Database
Global MSI_Obj As WindowsInstaller.Installer
Global MSI_InfoFeature As WindowsInstaller.FeatureInfo
Global MSI_InfoSummary As WindowsInstaller.SummaryInfo
Global MSI_RecordSet As WindowsInstaller.Record
Global MSI_Session As WindowsInstaller.Session
Global MSI_View As WindowsInstaller.View

Global MSI_Connected As Boolean

Global Const msiOpenDatabaseModeReadOnly = 0       'Opens a database read-only, no persistent changes.
Global Const msiOpenDatabaseModeTransact = 1       'Opens a database read/write in transaction mode.
Global Const msiOpenDatabaseModeDirect = 2         'Opens a database direct read/write without transaction.
Global Const msiOpenDatabaseModeCreate = 3         'Creates a new database, transact mode read/write.
Global Const msiOpenDatabaseModeCreateDirect = 4   'Creates a new database, direct mode read/write.
Global Const msiOpenDatabaseModePatchFile = 32     'Adds this flag to indicate a patch file.


Public Function fx_MSI_Connect(ByVal sMsiFile As String)
On Error Resume Next
    Set MSI_Obj = CreateObject("WindowsInstaller.Installer")
    Set MSI_DB = MSI_Obj.OpenDatabase(sMsiFile, msiOpenDatabaseModeTransact)
  
    If Err.Number <> 0 Then
        fx_MSI_Connect = False
        MSI_Connected = False
        objMsiDB = Nothing
        MSI_DB = Nothing
    Else
        fx_MSI_Connect = True
        MSI_Connected = True
    End If
    
End Function

'N'ayant pas trouvé le moyen de mettre en relation la base MSI avec le code via un connecteur (DATA ou Remote_DATA) je stocke la liste des tables dans un tableau de string ...

Public Sub fx_LoadMSI_Tables()
On Error Resume Next
Dim i As Integer
ReDim Preserve tabMSI_Tables(0)
    Set MSI_View = MSI_DB.OpenView("SELECT * FROM _Tables")
    MSI_View.Execute
    Set MSI_RecordSet = MSI_View.Fetch
    
    Do While  Err.Number = 0
        ReDim Preserve tabMSI_Tables(i)
        tabMSI_Tables(i) = MSI_RecordSet.StringData(1)
        'Debug.Print MSI_RecordSet.StringData(1); "Status = "; MSI_RecordSet
        i = i + 1
        Set MSI_RecordSet = MSI_View.Fetch
    Loop

    If Err.Number = 91 Then Exit Sub

End Sub

Voilà pour le début ...
A+
Blu

 Ajouter un commentaire




Nos sponsors


Sondage...

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 : 2,324 sec (3)

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