Frage

Wir entwickeln ein Produkt, das von unseren Kunden an ihre Kunden verteilt. Wir müssen der Administrator auf dem Client-Unternehmen ermöglichen, Konfigurationsänderungen an den Installateur, bevor er es aus an die Endbenutzer sendet. Konfigurationsänderungen in diesem Fall bedeuten ein paar Registry-Einträge auf dem Endbenutzer-Computer vorgenommen werden. Wie mache ich das?

War es hilfreich?

Lösung

Bitte überprüfen Sie dies: http://ozgrant.com/2008 / 03/11 / Customizing-your-Wix-msi-mit-Transformations-Dateien /

Hier

  • Team Entwicklung schafft ein allgemeines Installationsprogramm.
  • Die IT-Team erstellt dann verschiedene Transformationen (.mst-Dateien) mit Orca und
  • Diese Installer mit bestimmten .mst zu anderen Satz von Kunden ausgeliefert wird.

HTH

Andere Tipps

Hier ist ein Beispielskript, das wir unseren Kunden auszusenden. Sie erstellen eine benutzerdefinierte Konfigurationsdatei, führen Sie dieses Skript, und am Ende mit einem MST und ein CAB, die den Standard, die in der Basis MSI werden überschrieben.

Ursprünglich haben wir nur die Kunden Anweisungen Orca zu verwenden, aber das ist wirklich nur ermöglicht ihnen Eigenschaften / Werte zu aktualisieren - wenn Sie eine Config-Datei zu ersetzen, dann endet es ein bisschen kompliziert für die meisten IT-Mitarbeiter, es sei denn sie haben Zugang zu WISE, Install oder ähnliches.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top