Pergunta

Nós desenvolvemos um produto que é distribuído pelos nossos clientes para os seus clientes. Precisamos permitir que o administrador da empresa cliente para fazer alterações na configuração para o instalador antes de ele envia para o usuário final. Alterações de configuração neste meio de caso de um par de entradas de registro a serem feitas no computador de usuários finais. Como posso fazer isso?

Foi útil?

Solução

Por favor, verifique o seguinte: http://ozgrant.com/2008 / 03/11 / personalizando-o-wix-msi-com-transformam-files /

Aqui,

  • Desenvolvimento de equipe cria um instalador genérico.
  • A TI, a equipe então cria transformações diferentes (arquivos .mst), utilizando Orca e,
  • Estes instalador com particular .mst é enviado para um conjunto diferente de clientes.

HTH

Outras dicas

Aqui está um exemplo de script que enviamos aos nossos clientes. Eles criam um arquivo de configuração personalizada, executar este script, e acabar com uma MST e um CAB que irá substituir o padrão incluído na base MSI.

Originalmente, apenas deu as instruções que os clientes usem Orca, mas que realmente só lhes permite atualizar as propriedades / valores - se você precisa substituir um arquivo de configuração, em seguida, ele acaba um pouco complicado para a maioria a equipe de TI a menos que tenham acesso a WISE, InstallShield ou similar.

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top