Domanda

Sviluppiamo un prodotto che viene distribuito dai nostri clienti ai loro clienti. Dobbiamo consentire all'amministratore dell'azienda client di apportare modifiche alla configurazione all'installatore prima che lo invii all'utente finale. In questo caso, le modifiche alla configurazione indicano che sul computer degli utenti finali devono essere eseguite un paio di voci di registro. Come posso farlo?

È stato utile?

Soluzione

Controlla questo: http://ozgrant.com/2008 / 03/11 / personalizzazione-your-Wix-MSI-con-Transform-files /

Qui,

  • Il team di sviluppo crea un programma di installazione generico.
  • Il team IT, quindi crea diverse trasformazioni (file .mst) usando Orca e,
  • Questi installer con particolare .mst vengono spediti a diversi set di client.

HTH

Altri suggerimenti

Ecco uno script di esempio che inviamo ai nostri clienti. Creano un file di configurazione personalizzato, eseguono questo script e finiscono con un MST e un CAB che sovrascriveranno il valore predefinito incluso nell'MSI di base.

Inizialmente abbiamo appena dato ai clienti le istruzioni per utilizzare Orca, ma ciò consente loro di aggiornare proprietà / valori: se devi sostituire un file di configurazione, questo diventa un po 'complicato per la maggior parte del personale IT a meno che non abbiano accesso a WISE, InstallShield o simile.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top