[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[vidalia-svn] r3600: Add script to automate creation of localization tranforms in (vidalia/trunk/pkg/win32)
Author: coderman
Date: 2009-03-06 07:03:34 -0500 (Fri, 06 Mar 2009)
New Revision: 3600
Added:
vidalia/trunk/pkg/win32/mktransform.vbs
Log:
Add script to automate creation of localization tranforms in MSI packages.
Added: vidalia/trunk/pkg/win32/mktransform.vbs
===================================================================
--- vidalia/trunk/pkg/win32/mktransform.vbs (rev 0)
+++ vidalia/trunk/pkg/win32/mktransform.vbs 2009-03-06 12:03:34 UTC (rev 3600)
@@ -0,0 +1,67 @@
+' Copyright (C) 2008-2009 The Tor Project, Inc.
+' See LICENSE file for rights and terms.
+'
+' This script automates the task of creating transforms from one MSI database
+' to another. This is required for language based transforms, for example.
+'
+' To apply vidalia_fr.msi localization to vidalia.msi with name 'fr':
+' cscript.exe mktransform.vbs fr vidalia.msi vidalia_fr.msi
+'
+Const msiOpenDatabaseModeReadOnly = 0
+Const msiOpenDatabaseModeTransact = 1
+Const msiViewModifyAssign = 3
+Const msiTransformErrorNone = 0
+Const msiTransformValidationNone = 0
+
+Dim message
+If Wscript.Arguments.Count < 3 Then
+ message = "Usage: mktransform <transform name> <minimal msi> <target msi>"
+ Wscript.Echo message
+ Wscript.Quit 1
+End If
+
+Dim transformName
+Dim minMsiFile
+Dim currMsiFile
+transformName = Wscript.Arguments.Item(0)
+minMsiFile = Wscript.Arguments.Item(1)
+currMsiFile = Wscript.Arguments.Item(2)
+
+CreateTransform transformName, minMsiFile, currMsiFile
+Wscript.Quit 0
+
+Sub CreateTransform (TransformName, MinMsiFile, CurrMsiFile)
+ ' Create transform from minimal to current/target MSI database
+ Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError
+ Dim database1 : Set database1 = installer.OpenDatabase(MinMsiFile, msiOpenDatabaseModeTransact) : CheckError
+ Dim database2 : Set database2 = installer.OpenDatabase(CurrMsiFile, msiOpenDatabaseModeReadOnly) : CheckError
+ Dim transform : transform = TransformName & ".mst"
+ database2.GenerateTransform database1, transform : CheckError
+ database2.CreateTransformSummaryInfo database1, transform, msiTransformErrorNone, msiTransformValidationNone : CheckError
+
+ ' Embed Transform into the database with the requested name
+ Set view = database1.OpenView("SELECT `Name`,`Data` FROM _Storages") : CheckError
+ view.Execute : CheckError
+ Set record = installer.CreateRecord(2)
+ record.StringData(1) = TransformName
+ record.SetStream 2, transform : CheckError
+ view.Modify msiViewModifyAssign, record : CheckError
+ database1.Commit : CheckError
+ Set database1 = Nothing
+ Set database2 = Nothing
+End Sub
+
+Sub CheckError
+ If Err = 0 Then Exit Sub
+ Dim message, errRec
+ message = Err.Source & " " & Hex(Err) & ": " & Err.Description
+ If Not installer Is Nothing Then
+ Set errRec = installer.LastErrorRecord
+ If Not errRec Is Nothing Then
+ message = message & vbNewLine & errRec.FormatText
+ End If
+ End If
+ Wscript.Echo message
+ Wscript.Quit 1
+End Sub
+