Windows Installer XML (WiX)

Wurde eine neue Software entwickelt, muss diese Software noch paketiert werden. Mit Hilfe dieses Installationspaketes kann diese Software dann an die verschiedenen Windows-Clients verteilt werden. Um ein solches Installationspaket, auch Setup bezeichnet, zu erstellen gibt es verschiedene gratis und Open Source – Applikationen.

Zwei weitverbreitete Programme zum Erstellen von Windows Installationsprogramme sind NSIS und Inno Setup. Beide erstellen eine ausführbare EXE-Datei, um die Software zu installieren. Nachteil beider Installationsprogramme ist, dass sie kein standardisiertes Installationsformat verwenden. Somit ist vor der Installation nicht ersichtlich was genau installiert, beziehungsweise welche Einstellungen vorgenommen werden. Daher verwenden viele Grossfirmen lieber ein standardisiertes Format wie das „Windows Installer XML“ das durch den „Windows Installer“ bereitgestellt wird.

Der Windows Installer (vormals Microsoft Installer) stellt eine Laufzeitumgebung für Installationsroutinen unter Microsoft-Windows-Betriebssystemen bereit. Er besteht aus einem Windows-Systemdienst, welcher Paketdateien im msi-Format (Microsoft Software Installation), sowie Dateien mit den Dateiendungen mst für Transform-Dateien und msp für Patches interpretieren, entpacken und ausführen kann. [1]

Eine Programmsammlung zum Erstellen von MSI-Paketen wurde intern bei Microsoft entwickelt und später als erstes Open-Source Produkt der Firma veröffentlicht. Der Name dieser Programmsammlung ist „WiX-Toolset“. Das gesamte Installationspaket wird mit Hilfe von XML definiert. Die Einarbeitung in das „Windows Installer XML“ braucht zwar seine Zeit, wird aber durch ein praktisches GUI-Tool „WixEdit“ oder dem Visual Studio Template „Votive“ vereinfacht. Auch sehr nützlich ist das Buch von Nick Ramirez mit dem Titel „A Developer’s Guide to Windows Installer XML“.

Nützliche Links

Webseite des WiX Toolset
Webseite des WiX Edit GUI
Wikipedia: WiX
Webseite von Inno Setup
Webseite des NSIS Installer

Referenzen
[1] Wikipedia: Windows Installer

VBScript: Microsoft DNS-Server Einträge bearbeiten

Zuletzt aktualisiert am: 02.06.2016

Mit Hilfe der „DNS WMI Services“ kann der Microsoft DNS Server verwaltet werden. Dies ermöglicht das Erstellen von Skripts zum Hinzufügen, Löschen oder Editieren von Zonen und Records.

Um mit den „DNS WMI Klassen“ zu arbeiten sind folgende Schritte notwendig:

  1. WMI Service initiieren (remote oder lokal)
  2. Mit Hilfe des WMI Service kann dann die benötigte „DNS WMI Klasse“ instanziiert werden

Lokalen WMI Service initiieren:


Dim objWMIService: Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\MicrosoftDNS")

Remote WMI Service initiieren:


Dim objSWbemLocator: Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Dim objWMIService: Set objWMIService = objSWbemLocator.ConnectServer(hostIP, _ 
		"root\MicrosoftDNS", _ 
		username, _ 
		password, _ 
		"", _ 
		"") 	

Die Parameter:

  • hostIP = IP des DNS-Server
  • username = Benutzername
  • password = Passwort

Neue „Primary-Zone“ erstellen:


Dim objDNSZone: Set objDNSZone = objWMIService.Get("MicrosoftDNS_Zone")
objDNSZone.CreateZone(zoneName,0)

Bedeutung der Parameter:

  • zoneName = Name der neuen Zone (monsterli.ch, switch.ch, usw.)
  • 0 = Zone des Typs: „primary zone“

Neue „Secondary-Zone“ erstellen:


Dim objDNSZone: Set objDNSZone = objWMIService.Get("MicrosoftDNS_Zone")
objDNSZone.CreateZone(zoneName,1,false,zoneName & "dns",array(nsMasterIP))

Dabei sind die Parameter:

  • zoneName = Name der neuen Zone (Domain)
  • 1 = Zone des Typs: „secondary zone“
  • false = keine „AD integrated zone“
  • zoneName & „dns“ = Name der Zonendatei
  • array(nsMasterIP) = Array mit der IP des primären Server dieser Zone

Neuer A-Record erstellen:


Dim objItem: Set objItem = objWMIService.Get("MicrosoftDNS_AType")
objItem.CreateInstanceFromPropertyData(masterDNSServer, zoneName, subZoneName , 1, 600, hostIP)

Die Parameter:

  • masterDNSServer = IP des primären Server
  • zoneName = Name der Zone (Domain)
  • subZoneName = gewünschter Hostname (www, mail, ftp… usw.)
  • 1 = Record Class IN (Internet)
  • 600 = TTL in Sekunden
  • hostIP = IP-Adresse des Hosts

Um weitere Records wie NS, MX, CNAME, usw. zu erstellen, muss einfach die „DNS WMI Class“ geändert werden.

Zone löschen:

Um eine bestehende Zone zu löschen wird mit Hilfe der „.Get“ Funktion des WMI-Service die Zone selektiert und gelöscht.


Dim objServer: set objServer = objWMIService.Get("MicrosoftDNS_Server.name="".""")
Dim objItem: Set objItem = objWMIService.Get("MicrosoftDNS_Zone.ContainerName=""" & zoneName & """,DnsServerName=""" & objServer.name & """,Name=""" &  zoneName & """")
if isObject(objItem) then
	objItem.delete_
end if

Benutzte Parameter:

  • zoneName = Name der Zone die gelöscht werden soll
  • objServer.name = Name des verwendeten DNS-Server
  • zoneName = Name der Zone die gelöscht werden soll

Nützliche Links

DNS WMI Provider Samples—Managing DNS Zones
Scripts to manage DNS Server