If-Abfrage Denkfehler?

Benutzeravatar
Lammsalat
Beiträge: 33
Registriert: 03. Feb 2010, 18:20
Kontaktdaten:

If-Abfrage Denkfehler?

Beitrag von Lammsalat » 03. Feb 2010, 18:47

Hallo Liebe Empirum Gemeinde,

ich habe ein Problem mit einer "popligen" If-Abfrage. Es geht um folgendes. Ich möchte OpenVPN von Kamaro Paketieren.
Die Installation der Software läuft via PackageRobot 1A.
Das Paket soll bei 3 verschiedenen Usern ausgebracht werden. Jeder der User benötigt eine eigene Konfig & Zertifikate.

Meine Idee war es über eine IF-Abfrage den angemeldeten User zu bestimmen um damit einen Usergebundenen Abschnitt ausführen zu lassen.
Mit einer If-Abfrage in dem Paket funktioniert es. Packe ich die 3 IF-Abfragen in Reihe bringt er mir im Debug Modus sofort einen Fehler:

[fade]Ungültige Parameter in 'If %UserName% = "User1" Then "Set:User1" Else "Set:Nix" EndIf'![/fade]

Wenn ich das Paket Aktiviere läuft es durch, führt auch die If-Abfrage aus, meldet aber am Schluss einen Fehler.

Meine Frage wäre nun: Wo hab ich einen Denkfehler bzw. Kann ich die Fehlermeldung nach dem Paket irgendwie unterdrücken?


Code: Alles auswählen

[SetupInfo]
Author                  =
CreationDate            =27.01.2010 10:36:07 
InventoryID             = 
Description             = 
Method                  = diff + PackageRobot
Tested on               = XP
Dependencies            = 
Command line options    = /S2
Last Change             =
Build                   = 

[VarDefInfo]
; <Variable>, <Type>, <Allow>

[Setup]
Version=10.5
ShowCaption=1
BlockInput=0

[Requirements]

[Application]
ProductName=openVPN
ProductNameShort=openVPN
Version=2.1
VersionDirSuffix=100
Revision=0
ServiceRelease=0
DeveloperName=Kamaro
DeveloperNameShort=Kamaro
SetupName=%ProductName% %Version% %SetupWizard%
Text1="%ProductName% %Version%",         Arial,           30, , 00FFFF, 4,    , LEFT BOLD ITALIC
Text2="%DeveloperName%",                 Arial,           24, , 00FFFF, 4,    , LEFT BOLD ITALIC
Text8="%Company%",                       Arial,           18, , 00FFFF, 4,  10, RIGHT BOLD ITALIC
Text9="%InstallationFor% %WindowsUser%", Arial,           14, , 007F00, 4, -14, BOTTOM ITALIC LEFT
BackgroundColor=FF0000,000000
BackgroundPicture=
BackgroundSound=
Logo=
WizardPicture=
CopyDialogRect=0%, 0%, 100%, 100%, HCENTER VCENTER
PrecopyFiles=
UserKeyName=%DeveloperName%\%ProductName%
MachineKeyName=%DeveloperName%\%ProductName%\%Version%
UninstallKeyName=%DeveloperName% %ProductName% %Version%
UninstallDisplayName=%ProductName% %Version%
UninstallString=%ReinstallString% /U
ReinstallString="%CommonSetupDir%\Setup.exe" "%App%\%SetupInfDir%\Setup.inf"
ReinstallMode=1
HideUninstall=0
UninstallDisplayIcon=
SrcDir=..
ApplicationDir=%ProgramFilesDir%\%ProductName%
SetupInfDir=Install
DataDir=%Personal%
DefaultUser=
DefaultCompany=
Prompts=
RunIfInstalled=
Readme=
Execute=
Expand=0
CopyExistingFiles=0
AskUninstallOld=1
AskLicence=0
AskInfo=0
AskFromCD=0
AskShared=0
AskMode=0
AskDir=0
AskDataDir=0
AskUser=0
AskWinDir=0
UseUser=0
UseCompany=1
UseProductID=0
ProductIDLength=0
UseProductIDPerOption=0
UseCheckmarks=2
AutoIniFileMapping=0
ShellLinks=1
CommonShellLinks=0
CreateUnresolvableShellLinks=1
ShowShellFolder=
LicenceText=
InfoText=
RequirementsText=
UseStringSection=Strings:09
UseSysStringSection=SysStrings:09
PrintServer=
PrintEnvironment=
DateWarning=1
SizeWarning=1
Reboot=0
PreventExternalReboot=0
StartServicesOnReboot=0
CallTimeOut=3600
AbortAfterCallTimeOut=1
ReplaceRunOnce=0
DisableCancelButton=1
ShowEndMessage=1
EndMessage=%EndMessageDesc%
SetupExtDll=
SetupHookFunc=
ShowFullPath=0
VerboseLevel=0

[Admin]
AdminSetup=0
ApplicationDir=
AskDir=1
AskOptions=0
ClientSrcDir=Client
ReinstallString="%Src%\..\..\..\..\User\Setup.exe" "%Src%\%SetupInfDir%\Setup.inf"
UninstallString=%ReinstallString% /U


[Client]
AskDir=0
AskOptions=1
ClientDir=
InstallAtLast=0
Reboot=0
UseUninstallStringFromApplication=1

[Workstation]
AskOptions=0
AdminUninstallLink=0
AdminUninstallLinkName=%ProductName% %Version%
UserSetupLink=0
UserSetupLinkName=%ProductName% %Version%

[Strings:07]
Disk1=Diskette 1: Installationsdiskette
EndMessageDesc=Die Installation wurde erfolgreich abgeschlossen!
InstallationFor=Installation für:
InstallerDesc=Dienstprogramm zum Installieren einzelner Komponenten.
InstallerName=Installationsprogramm
ProductDesc=
SetupWizard=Installations-Assistent
Uninstallation=deinstallieren

[Strings:09]
Disk1=Diskette 1: Installation disk
EndMessageDesc=Installation was completed successfully!
InstallationFor=Installation for:
InstallerDesc=Service program to install single components.
InstallerName=Setup program
ProductDesc=
SetupWizard=Installation Wizard
Uninstallation=Uninstallation

[SysStrings:07]
Users=Benutzer

[SysStrings:09]
Users=Users

[Environment]
CommonSetupDir=%CommonFilesDir%\Setup%SetupBits%
V_MachineValuesPath=%SoftwareDepotServerName%\Values$\MachineValues\%DomainName%
V_UserValuesPath=%HKLM,"Software\matrix42\Software Depot","HomeServer"%\Values$\UserValues\%UserDomain%

; Maschinenabhängige Variablen
; machine dependent variables
;VM_<Variable>=%%%V_MachineValuesPath%\%ComputerName%.ini,%ComputerName%,<Variable>%%

; Userabhängige Variablen
; user dependent variables
;VU_<Variable>=%%%V_UserValuesPath%\%WindowsUser%.ini,%WindowsUser%,<Variable>%%

; !!! Setzen der entsprechenden ReplaceEnv Befehle für die Variablen im Abschnitt [Product] nicht vergessen!!!
; !!! Don't forget to set the appropriate ReplaceEnv instructions for the variables in the section [Product]!!!

[Prompts]
;KamaroUser="Bitte geben Sie ihren Benutzernamen ohne Leerzeichen ein (NachnameVorname)",,,,USEDEFAULT,
[Services]

[Processes]

[EventSources]

[Encryption]

[Disks]
1=%Disk1%

[UserKeyNames]

[Icons]
Product = %ProductNameShort%.ico, 0, 000000, ICON

[Options]
Installer = %InstallerName%, COPYALWAYS, Installer, "%InstallerDesc%"
Product   = %ProductName%,   COPYALWAYS, Product,   "%ProductDesc%"

[OptionDependencies]

[OptionGroups]

[Installer]
1:..\..\..\..\User\Setup.exe,      %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupDeu.chm,   %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\SetupEnu.chm,   %CommonSetupDir%, OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:..\..\..\..\User\Mx42SynSem.dll, %System%,         OPTIONAL USEFILENAME DIRECTORY NOSIZEWARNING SETUP, 0
1:%SetupInfDir%\Setup.inf,                         , NORMAL,                                             0

[FileCheckMachine]
ReplaceEnv V_MachineValuesPath
If DoesFileExist ("%V_MachineValuesPath%\%ComputerName%.ini") == "0" Then "FileIsntThere" EndIf

[FileCheckClient]
ReplaceEnv V_UserValuesPath
If "%UserDomain%" <> "%ComputerName%" Then "CheckClientFile" EndIf

[CheckClientFile]
If DoesFileExist ("%V_UserValuesPath%\%WindowsUser%.ini") == "0" Then "FileIsntThere" EndIf

[FileIsntThere]
ErrorLogMsg <Error>
Abort

[Product]
;#FileCheckMachine, MACHINE
;#FileCheckClient, CLIENT

;ReplaceEnv <Variable>

#Set:Product
#Set:Anpassung
#Reg:OnUninstallProduct, DELETE
#Reg:Product
#Ini:Product
#Security:Product


[Set:Product]
CallHidden "%SRC%\Install_openvpn-2.1_rc22-install.exe"

-CallHidden "%SRC%\Uninstall_openvpn-2.1_rc22-install.exe"


1:Keys,	"%ProgramFilesDir%\%ProductName%\",	CREATE DIRECTORY,,
1:ca.crt,	"%ProgramFilesDir%\%ProductName%\Keys\",ALWAYS

[Set:Anpassung]

If %WindowsUser% = "User1" 	Then "Set:User1" 	Else "Set:Nix"  EndIf
If %WindowsUser% = "User2" 	Then "Set:User2" 	Else "Set:Nix"  EndIf
If %WindowsUser% = "User3" 	Then "Set:User3" 	Else "Set:Nix"  EndIf

[Set:User1]
1:User1.crt,			"%ProgramFilesDir%\%ProductName%\Keys\", ALWAYS
1:User1.key,			"%ProgramFilesDir%\%ProductName%\Keys\", ALWAYS
1:kamaroclient-User1.ovpn, "%ProgramFilesDir%\%ProductName%\config\",ALWAYS

[Set:User2]
1:User2.crt,			"%ProgramFilesDir%\%ProductName%\Keys\", ALWAYS
1:User2.key,			"%ProgramFilesDir%\%ProductName%\Keys\", ALWAYS
1:kamaroclient-User2.ovpn, "%ProgramFilesDir%\%ProductName%\config\",ALWAYS

[Set:User3]
1:User3.crt,			"%ProgramFilesDir%\%ProductName%\Keys\", ALWAYS
1:User3.key,			"%ProgramFilesDir%\%ProductName%\Keys\", ALWAYS
1:kamaroclient-User3.ovpn, "%ProgramFilesDir%\%ProductName%\config\",ALWAYS

[Set:Nix]
1:nix.txt,%TEMP%\,ALWAYS,,

[Reg:OnUninstallProduct]


[Reg:Product]

[Ini:Product]


[Security:Product]


[Shell:Installer]
;%ProductName%\%ProductName% Setup, %ReinstallString%
;%ProductName%\%ProductName% %Uninstallation%, %UninstallString%, , , , , 1, ,

[Shell:Product]
Wär nett wenn mir da jemand helfen könnte.


Gruß Lammsalat

Benutzeravatar
lennu
Beiträge: 581
Registriert: 01. Aug 2005, 16:20
Wohnort: Bonn
Kontaktdaten:

Beitrag von lennu » 03. Feb 2010, 19:04

Hallo,
meines erachtens ist die Syntax "IF X == Y THEN Z1 ELSE Z2 ENDIF", also fehlt bei Dir ein Gleichheitszeichen je IF-Abfrage.

Grüße,
Lennu
Lennart Freyberg
Sysadmin
Deutsche Steinzeug Cremer & Breuer AG

Benutzeravatar
Lammsalat
Beiträge: 33
Registriert: 03. Feb 2010, 18:20
Kontaktdaten:

Beitrag von Lammsalat » 04. Feb 2010, 09:12

Hallo Lennu,

das ist mir auch schon aufgefallen. Hab es jetzt aber nochmal getestet. Leider kommt der gleich Fehler.

Gruß Lammsalat
Gruß Michael
I don't know - what is Lammsalat?

Benutzeravatar
MGrundl
Beiträge: 627
Registriert: 09. Mai 2008, 17:18
Wohnort: Wien
Kontaktdaten:

Beitrag von MGrundl » 04. Feb 2010, 10:17

Versuch mal:

If "%WindowsUser%" == "User1" Then "Set:User1" Else "Set:Nix" EndIf


lg,
Manfred

Benutzeravatar
Lammsalat
Beiträge: 33
Registriert: 03. Feb 2010, 18:20
Kontaktdaten:

Beitrag von Lammsalat » 04. Feb 2010, 11:11

Hallo Manfred,

funktioniert leider auch nicht. Selber Fehler :cry:

Gruß Lammsalat
Gruß Michael
I don't know - what is Lammsalat?

Benutzeravatar
MGrundl
Beiträge: 627
Registriert: 09. Mai 2008, 17:18
Wohnort: Wien
Kontaktdaten:

Beitrag von MGrundl » 04. Feb 2010, 11:29

Welcher Fehler kommt denn?
Bist Du Dir sicher, dass er von der IF Abfrage kommt?
Hast du die copy-Einträge mitgedifft, oder händisch eingetragen?
Die schauen nämlich komisch aus.
Zum Beispiel:
1:nix.txt,%TEMP%\,ALWAYS,,

Zur Fehlereingrenzung lösch mal die Copy-Einträge in den Sections und probier dann eine Installation.

lg,
Manfred

Marcus_B
Beiträge: 126
Registriert: 15. Jul 2008, 13:02
Wohnort: Berlin
Kontaktdaten:

Beitrag von Marcus_B » 04. Feb 2010, 11:30

Seit dem letzten Empirum Update gibts ja eine Reihe ungereimtheiten.
Aber IF abfragen sollten funktionieren :)

Dein Script sollte funktionieren.
Prüfe doch einmal den Inhalt %WindowsUser% ? Steht im Editor oder per Echo %WindowsUser% .
oder
If %WindowsUser% == "" Then "Set:EchoError" EndIf

[Set:EchoError]
ErrorLogMsg VariableX ohne Inhalt


Oder Versuche einmal die Windows Variable %UserName% zu nutzen.

Benutzeravatar
Lammsalat
Beiträge: 33
Registriert: 03. Feb 2010, 18:20
Kontaktdaten:

Beitrag von Lammsalat » 04. Feb 2010, 11:52

@Marcus_B
Seit dem letzten Empirum Update gibts ja eine Reihe ungereimtheiten
Wir arbeiten noch mit der Empirum Pro Version 2005 Feature Pack2 Hotfix 2007. Umstellung auf V12 ist auf März geplant.

Oder Versuche einmal die Windows Variable %UserName% zu nutzen.
WindowsUser & UserName haben den gleichen Inhalt (jeweils den Anmeldename ohne Domain)


@Manfred
Welcher Fehler kommt denn?
Beim DebugMode startet die Inf nicht und bringt sofort den Fehler
Ungültige Parameter in 'If %UserName% = "User1" Then "Set:User1" Else "Set:Nix" EndIf'!
Wobei immer die aktuelle If-Abfrage in der FM steht. Die FM kommt 6x (pro IF-Abfrage in der Reihenfolge 2x)

Nachdem ich den Fehler bestätige, macht er mit der Inf weiter => springt auf Set:Product und schließt die Inf auch ab.

Wenn ich das Paket aktiviere macht der Set:Product, in der Set:Anpassung macht er die If-Abfrage die sich auf den bei der Installation angemeldeten User bezieht, macht die INF fertig und bringt dann eine FM, dass die Installation nicht geklappt hat.

Gemacht wurde aber alles. OpenVPN installiert, die Dateien für den angemeldeten User kopiert und fertig.

Hast du die copy-Einträge mitgedifft, oder händisch eingetragen?
Die schauen nämlich komisch aus.
Sind händisch eingetragen, funktionieren aber.
Harte Nuss - das Paket. Hoffe es hat jemand nen Nussknacker

Gruß Lammsalat
Gruß Michael
I don't know - what is Lammsalat?

Marcus_B
Beiträge: 126
Registriert: 15. Jul 2008, 13:02
Wohnort: Berlin
Kontaktdaten:

Beitrag von Marcus_B » 04. Feb 2010, 12:21

Deine IF-Abfrage ist so wie sie hier steht definitiv richtig.
Kommentier mal die Copies aus den entsprechenden Sektion raus und geb sowas wie ErrorLogMsg Set:User1 oder entsprechend Set:Nix damit wir sehen ob der überhaupt in die Sektion springt.

Benutzeravatar
Lammsalat
Beiträge: 33
Registriert: 03. Feb 2010, 18:20
Kontaktdaten:

Beitrag von Lammsalat » 04. Feb 2010, 15:08

SetupErrorLog wirft mir nur das aus.
BKDOM;BK-VM-040
Date/Time : 04.02.2010 14:59:01
ProductName: openVPN
Version : 2.1
Revision : 0
SetupInf : \\bk015\empirum$\Configurator\Packages\Kamaro\openVPN\2.1\Install\Setup.inf
------------
04.02.2010 14:59:01
Ungültige Parameter in Befehl 'If "%WindowsUser%" == "EbertUschi" Then "Set:Ebert" Else "Set:Nix" EndIf'!
OK
------------
04.02.2010 14:59:01
Ungültige Parameter in Befehl 'If "%WindowsUser%" == "FiederUrsula" Then "Set:Fieder" Else "Set:Nix" EndIf'!
OK
------------
04.02.2010 14:59:01
Ungültige Parameter in Befehl 'If "%WindowsUser%" == "EbertUschi" Then "Set:Ebert" Else "Set:Nix" EndIf'!
OK
------------
04.02.2010 14:59:01
Ungültige Parameter in Befehl 'If "%WindowsUser%" == "FiederUrsula" Then "Set:Fieder" Else "Set:Nix" EndIf'!
OK
------------
ErrorLogMsg: Set:Majev
------------
04.02.2010 14:59:14
Ungültige Parameter in Befehl 'If "%WindowsUser%" == "EbertUschi" Then "Set:Ebert" Else "Set:Nix" EndIf'!
OK
------------
Der ErrorLogMsg Eintrag steht im Anpassungsbereich von dem angemeldeten User. D.h. für mich es hat funktioniert.


Ein weiterer Test hat ergeben. Wenn die If-Abfrage zu dem momentan angemeldeten User als erstes kommt funktioniert sie. Wenn Sie aber an zweiter oder letzter Stelle steht funktioniert sie nicht.

Ich werd aus dem Ding nicht schlau..... :evil:
So langsam bin ich geneigt die Anpassung als extra Paket für jeden User zu machen.
Gruß Michael
I don't know - what is Lammsalat?

Marcus_B
Beiträge: 126
Registriert: 15. Jul 2008, 13:02
Wohnort: Berlin
Kontaktdaten:

Beitrag von Marcus_B » 04. Feb 2010, 15:25

Also laut dem ErrorLogMsg hat die IF Abfrage ja funktioniert, wenn du es nach meinem Tip ausgegeben lassen hast.

Wenn Du wirklich alle Namen durchläufst und prüfst wer angemeldet ist, macht die Section Set:Nix keinen Sinn.
Da er den Teil immer ausführen wird. Wenn Du die Section brauchst und mehrfach anspringst schreib mal ein '!' davor.
Else "!Set:Nix"
Zuletzt geändert von Marcus_B am 04. Feb 2010, 15:49, insgesamt 2-mal geändert.

Marcus_B
Beiträge: 126
Registriert: 15. Jul 2008, 13:02
Wohnort: Berlin
Kontaktdaten:

Beitrag von Marcus_B » 04. Feb 2010, 15:37

Ich kenne Deinen Ablauf nicht aber ich würds mir einfacher machen. Würde Dir das genügen ? Ohne IF abfragen.

[Set:UserConfig]
1:%WindowsUser%.crt, "%ProgramFilesDir%%ProductName%Keys", ALWAYS
1:%WindowsUser%.key, "%ProgramFilesDir%%ProductName%Keys", ALWAYS
1:kamaroclient-%WindowsUser%.ovpn, "%ProgramFilesDir%%ProductName%config",ALWAYS
ich denke mal wenn du kamaro zuweist befinden sich die Userdateien bereits im Depot ?

backslashs nicht vergessen, zickt bei mir rum hier.

Benutzeravatar
Lammsalat
Beiträge: 33
Registriert: 03. Feb 2010, 18:20
Kontaktdaten:

Beitrag von Lammsalat » 04. Feb 2010, 16:23

:shock: :idea: wooohoooo.....Einfach aber effizient..... :lol: YMMD

Mit der Zeit wird man einfach "*.Inf-Blind".

Danke für die Hilfe

Gruß Lammsalat
Gruß Michael
I don't know - what is Lammsalat?

Benutzeravatar
MGrundl
Beiträge: 627
Registriert: 09. Mai 2008, 17:18
Wohnort: Wien
Kontaktdaten:

Beitrag von MGrundl » 04. Feb 2010, 16:24

Ist zwar schon lange her, aber ich bilde mir ein, dass im If der ELSE-Zweig erst in einer bestimmten Empirum Version eingeführt wurde.

Kann es sein, das das mit Version 2005 Feature Pack2 Hotfix 2007 noch gar nicht unterstützt wurde?

lg,
Manfred

Benutzeravatar
Lammsalat
Beiträge: 33
Registriert: 03. Feb 2010, 18:20
Kontaktdaten:

Beitrag von Lammsalat » 04. Feb 2010, 17:05

soweit ich weis ist er in den Else Zweig gesprungen und hat dort auch die "Nix.TXT" kopiert.

Von daher scheint es die Version zu kennen. Obs sie's auch kann wär die brennendere Frage :lol:
Gruß Michael
I don't know - what is Lammsalat?

Antworten

Zurück zu „Paketierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste