Question

Nous développons un produit qui est distribué par nos clients à leurs clients. Nous devons permettre à l'administrateur de la société cliente de modifier la configuration du programme d'installation avant de l'envoyer à l'utilisateur final. Dans ce cas, les modifications de configuration impliquent quelques entrées de registre à effectuer sur l'ordinateur de l'utilisateur final. Comment je fais ça?

Était-ce utile?

La solution

Veuillez vérifier ceci: http://ozgrant.com/2008 / 03/11 / personnaliser-votre-wix-msi-avec-transformer-fichiers /

Ici,

  • L’équipe de développement crée un programme d’installation générique.
  • L'équipe informatique crée ensuite différentes transformations (fichiers .mst) à l'aide d'Orca et,
  • Ce programme d'installation avec un fichier .mst particulier est livré à un ensemble de clients différent.

HTH

Autres conseils

Voici un exemple de script que nous envoyons à nos clients. Ils créent un fichier de configuration personnalisé, exécutent ce script et se retrouvent avec un fichier MST et un fichier CAB qui écraseront les valeurs par défaut incluses dans le fichier MSI de base.

Initialement, nous venions de donner aux clients les instructions pour utiliser Orca, mais cela ne leur permettait vraiment que de mettre à jour les propriétés / valeurs. Si vous devez remplacer un fichier de configuration, il s'avère un peu compliqué pour la plupart des informaticiens, à moins qu'ils aient accès à WISE, InstallShield ou similaire.

Option Explicit

Const MSI_SRC = "myapp.msi"
Const MSI_TEMP = "temp.msi"
Const MST_FILE = "custom.mst"
Const MY_CONFIG = "customsettings.reg"
Const CAB_FILE = "config.cab"

Dim filesys 
Set filesys=CreateObject("Scripting.FileSystemObject")

If filesys.FileExists(MSI_SRC) Then
   filesys.CopyFile MSI_SRC, MSI_TEMP
Else
    MsgBox "Unable to find " & MSI_SRC & "exiting", 48, "Fatal Error"
    Set filesys = Nothing
    WScript.Quit
End If

If filesys.FileExists(MST_FILE) Then
   filesys.DeleteFile(MST_FILE)
End If


Dim installer, database, database2, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_TEMP, 1)
Set database2 = installer.OpenDatabase (MSI_SRC, 1)

If filesys.FileExists(MY_CONFIG) Then
    Dim objFile, size, result, seq, objCab
    Set objCab = CreateObject("MakeCab.MakeCab.1")
    objCab.CreateCab CAB_FILE, False, False, False
    objCab.AddFile MY_CONFIG, filesys.GetFileName(MY_CONFIG)
    objCab.CloseCab

    Set objFile = filesys.GetFile(MY_CONFIG)
    size = objFile.Size

    Set view = database.OpenView ("SELECT LastSequence FROM Media WHERE DiskId = 1")
    view.Execute
    Set result = view.Fetch
    seq = result.StringData(1) + 1 ' Sequence for new configuration file

    Set view = database.OpenView ("INSERT INTO Media (DiskId, LastSequence, Cabinet) VALUES ('2', '" & seq & "', '" & CAB_FILE & "')")
    view.Execute

    Set view = database.OpenView ("UPDATE File SET FileSize = " & size & ", Sequence = " & seq & ", FileName = 'CUSTOM~2.REG|customsettings.reg' WHERE File = '" & LCase(MY_CONFIG) & "'")
    view.Execute
End If


database.GenerateTransform database2, MST_FILE
database.CreateTransformSummaryInfo database2, MST_FILE, 0, 0

' Cleanup
Set database = Nothing
Set database2 = Nothing
Set installer = Nothing
Set view = Nothing

filesys.DeleteFile(MSI_TEMP)
Set filesys = Nothing
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top