Вопрос

Мы разрабатываем продукт, который наши клиенты распространяют среди своих клиентов.Нам необходимо разрешить администратору компании-клиента вносить изменения в конфигурацию установщика, прежде чем он отправит его конечному пользователю.Изменения конфигурации в данном случае означают внесение нескольких записей в реестр на компьютере конечного пользователя.Как мне это сделать?

Это было полезно?

Решение

Пожалуйста, проверьте это:http://ozgrant.com/2008/03/11/customising-your-wix-msi-with-transform-files/

Здесь,

  • Команда разработчиков создает универсальный установщик.
  • Затем ИТ-команда создает различные преобразования (файлы .mst) с помощью Orca и
  • Этот установщик с определенным .mst поставляется разным клиентам.

ХТХ

Другие советы

Вот пример сценария, который мы рассылаем нашим клиентам. Они создают пользовательский файл конфигурации, запускают этот сценарий и получают MST и CAB, которые перезаписывают значение по умолчанию, включенное в базовый MSI.

Первоначально мы только давали клиентам инструкции по использованию Orca, но это действительно позволяет им только обновлять свойства / значения - если вам нужно заменить файл конфигурации, то для большинства ИТ-специалистов это немного усложняется, если у них нет доступа к WISE, InstallShield или аналогичный.

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top