PACE Suite MSI Editor Makros

Erstellt am 3. Juni 2016

Nachdem ich bereits im letzten Artikel (Makros für PACE Suite MSI Editor) versucht habe, einen kurzen Einblick in die PACE Suite Makros zu geben, folgen hier nun ein paar weitere kleine Script Beispiel.

Property auslesen

Wie der Name schon sagt, kann mit dieser Funktion der Wert einer bestimmten Property aus der Property Tabelle ausgelesen werden.

Function getProperty(sProperty)
'declaration ----
 Dim view, record
'init ----
Set view = database.Openview("Select Property,Value FROM Property WHERE Property = '"&sProperty&"'")
view.execute
Set record = view.fetch
'processing ----
If record is Nothing Then
  getProperty = ""
Else
  getProperty = record.StringData(2)
End If
set record = Nothing
End Function

Der Aufruf dieser Funktion aus einem Makro sieht dann z.B. folgendermassen aus:

msgbox getProperty("Manufacturer")

Hier wird der Wert der Property „Manufacturer“ ausgelesen und in einer Messagebox angezeigt. Im Fall von 7Zip würde dann an dieser Stelle „Igor Pavlov“ angezeigt werden.

Default Properties setzen

Mit diesem Makro werden ein paar Properties in die Property Tabelle geschrieben. Dies geschieht nur, wenn die Property nicht schon existiert.

sub setDefaultProperties()
	'declaration ----
	dim arrProperties, arrSingleProperty, strDefaultProperties
	'init ----
	strDefaultProperties = "ROOTDRIVE;C:\|ARPNOMODIFY;1|REBOOT;ReallySuppress|ARPNOREPAIR;1|MSIDISABLERMRESTART;1|ARPNOREMOVE;1|MSIFASTINSTALL;7|MSIRESTARTMANAGERCONTROL;DisableShutdown|MSIRMSHUTDOWN;2|ALLUSERS;1"
	arrProperties = split(strDefaultProperties,"|")
	'processing ----
	for i = 0 to ubound(arrProperties)
		'split single property
		arrSingleProperty = split(arrProperties(i),";")
		'check properties
		If fCheckExist("Property","Property",arrSingleProperty(0)) = False Then
			'if not existing, create it
			UpdateData database, "INSERT INTO `Property` (`Property`, `Value`) VALUES ('" & arrSingleProperty(0) & "', '" & arrSingleProperty(1) & "')"
		else
			'if existing, update it
			UpdateData database, "UPDATE `Property` SET `Property`.`Value`='" & arrSingleProperty(1) & "' WHERE `Property`.`Property`='" & arrSingleProperty(0) & "'"
		End If
		'msgbox "property " & arrSingleProperty(0) & " value " & arrSingleProperty(1)
	next
End Sub
Function fCheckExist(byVal sTable, byVal sColumn, byVal sValue)
'Purpose: checks for a certain value in a table
  'declaration ----
  Dim view, record, sQuery
  'init ----
  sQuery = "Select * From "&sTable&" WHERE "&sColumn&" = '"&sValue&"'"
  'main ----
  fCheckExist = False
  Set view = database.OpenView(sQuery)
  view.Execute
  Set record = view.Fetch
  If record is Nothing Then
    fCheckExist = False
  Else
    fCheckExist = True
  End If
End Function

Viel Spass beim täglichen Packaging Einsatz mit der PACE Suite!

Erstellt am 3. Juni 2016

Vielleicht auch interessant…

MSIX Editor in PACE Suite 6.0

MSIX Editor in PACE Suite 6.0

Die PACE Suite bietet seit geraumer Weile die Möglichkeit MSIX-Pakete zu erstellen. Mit SuitePACE- Suite 6.0 wurde die Erstellung von MSIX-Paketen jedoch verbessert, indem das Package Support Framework (PSF) integriert wurde

mehr lesen

This Area is Widget-Ready

You can place here any widget you want!

You can also display any layout saved in Divi Library.

Let’s try with contact form: