سؤال

نقوم بتطوير منتج يتم توزيعه من قبل عملائنا على عملائهم.نحن بحاجة إلى السماح للمسؤول في الشركة العميلة بإجراء تغييرات التكوين على المثبت قبل أن يرسله إلى المستخدم النهائي.تعني تغييرات التكوين في هذه الحالة إدخالين من إدخالات التسجيل على كمبيوتر المستخدم النهائي.كيف أقوم بهذا العمل؟

هل كانت مفيدة؟

المحلول

من فضلك افحص هذه:http://ozgrant.com/2008/03/11/customising-your-wix-msi-with-transform-files/

هنا،

  • يقوم فريق التطوير بإنشاء برنامج تثبيت عام.
  • يقوم فريق تكنولوجيا المعلومات بعد ذلك بإنشاء تحويلات مختلفة (ملفات .mst) باستخدام Orca و،
  • يتم شحن هذه المثبتات ذات .mst معينة إلى مجموعة مختلفة من العملاء.

هث

نصائح أخرى

وهنا برنامج نصي عينة الذي وجهنا لعملائنا. لأنها تخلق ملف التكوين مخصصة تشغيل هذا البرنامج النصي، وينتهي مع MST وCAB التي من شأنها أن الكتابة الافتراضي المدرجة في قاعدة MSI.

وأصلا نحن فقط أعطى تعليمات للعملاء استخدام أرك، ولكن هذا حقا تمكنهم فقط لتحديث الخصائص / القيم - إذا كنت بحاجة إلى استبدال ملف التكوين ثم ينتهي قليلا معقدة بالنسبة لمعظم موظفي تكنولوجيا المعلومات ما لم حصولهم على 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