hat schon jemand Erfahrungen damit gemacht, Schriften bzw. ein Schriftenpaket per Opsi zu verteilen?
Ich habe mich mal in älteren Beiträgen umgesehen und versucht die "Lösungen" zu überarbeiten und zu testen, aber bisher blieben die Versuche erfolglos.
Bei uns wurde früher mal ein Schriftenpaket für Opsi gebaut, hierfür wurde ein MSI erstellt, das dann über Opsi installiert wurde. Diese Lösung finde ich aber sehr umständlich, falls dann doch mal eine Schrift hinzugefügt werden muss.
Mir wäre am Liebsten, wenn die Schriften im Ordner CLIENT_DATA\Fonts liegen und anschließend über ein Skript an C:\Temp verschoben werden und von dort aus installiert und registriert werden. So kann man beliebig Schriften hinzufügen und muss nur noch eine neue Version des Pakets erstellen.
Verwendet werden sollen im Prinzip nur lizenzfreie Schriften, sodass keine Abfrage erfolgen muss.
Bisher habe ich folgendes gefunden und versucht zu testen.
Code: Alles auswählen
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
[Actions]
requiredWinstVersion >= "4.11.2.6"
DefVar $MsiId$
DefVar $UninstallProgram$
DefVar $LogDir$
DefVar $ProductId$
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $LicenseRequired$
DefVar $LicenseKey$
DefVar $LicensePool$
DefVar $InstPrg$
DefVar $TmpPath$
Set $LogDir$ = "%SystemDrive%\tmp"
; ----------------------------------------------------------------
; - Please edit the following values -
; ----------------------------------------------------------------
Set $ProductId$ = "fonts"
Set $MinimumSpace$ = "10 MB"
; the path were we find the product after the installation
Set $InstallDir$ = "%ProgramFiles32Dir%\Schriftenpaket"
Set $LicenseRequired$ = "false"
Set $LicensePool$ = "p_" + $ProductId$
Set $InstPrg$ = "FontReg.exe"
Set $TmpPath$ = "%Systemdrive%\temp"
; ----------------------------------------------------------------
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
isFatalError "No Space"
; Stop process and set installation status to failed
else
comment "Show product picture"
ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$
if FileExists("%ScriptPath%\delsub32.ins")
comment "Start uninstall sub section"
Sub "%ScriptPath%\delsub32.ins"
endif
Message "Installing " + $ProductId$ + " ..."
if $LicenseRequired$ = "true"
comment "Licensing required, reserve license and get license key"
Sub_get_licensekey
endif
comment "Start setup program"
Files_install
DosInAnIcon_do /64Bit
Files_uninstall
endif
[Files_install]
copy %ScriptPath%\fonts\* $TmpPath$\fonts
[DosInAnIcon_do]
cd $TmpPath$\fonts
$InstPrg$ /copy
[Files_uninstall]
del -sf "$TmpPath$\"
[Sub_get_licensekey]
if opsiLicenseManagementEnabled
comment "License management is enabled and will be used"
comment "Trying to get a license key"
Set $LicenseKey$ = demandLicenseKey ($LicensePool$)
; If there is an assignment of exactly one licensepool to the product the following call is possible:
; Set $LicenseKey$ = demandLicenseKey ("", $ProductId$)
;
; If there is an assignment of a license pool to a windows software id, it is possible to use:
; DefVar $WindowsSoftwareId$
; $WindowsSoftwareId$ = "..."
; Set $LicenseKey$ = demandLicenseKey ("", "", $WindowsSoftwareId$)
DefVar $ServiceErrorClass$
set $ServiceErrorClass$ = getLastServiceErrorClass
comment "Error class: " + $ServiceErrorClass$
if $ServiceErrorClass$ = "None"
comment "Everything fine, we got the license key '" + $LicenseKey$ + "'"
else
if $ServiceErrorClass$ = "LicenseConfigurationError"
LogError "Fatal: license configuration must be corrected"
LogError getLastServiceErrorMessage
isFatalError
else
if $ServiceErrorClass$ = "LicenseMissingError"
LogError "Fatal: required license is not supplied"
isFatalError
endif
endif
endif
else
LogError "Fatal: license required, but license management not enabled"
isFatalError
endif