Seite 1 von 1

Winst copy Befehl "program files" Problem

Verfasst: 14 Nov 2008, 15:20
von Sven.Beierlein
Hallo,

hat jemand eine idee wie man mit winst eine datei in c:\program files kopieren kann?

wenn ich folgendes eingebe:

Code: Alles auswählen

copy "%scriptpath%\files\*.*" "c:\program files\test"
dann kopiert er mit nichts :(

Re: Winst copy Befehl "program files" Problem

Verfasst: 14 Nov 2008, 16:48
von Lumo
Hi

Der Copy Befehl muss in der Files-Sektion sein

Beispiel:

Code: Alles auswählen

[Initial]
Message "Outlook Signatur einrichten"
LogLevel=2
StayOnTop=true

[Aktionen]
DefVar $sigpath$
Set $sigpath$ = "%AppdataDir%\Microsoft\Signatures\"
ShowBitmap /3 "%SCRIPTPATH%\outlook.bmp" "Outlook Signatur"
Files_copy
WinBatch_registersig

[Files_copy]
copy %scriptpath%\defaultsig.* $sigpath$

[WinBatch_registersig]
regedit /s %scriptpath%\signatur_registry.reg
Blos tritt hier bei mir der Fehler auf, dass %AppdataDir% den Wert "-!!- not found -!!-" enthält. Also die Dateien werden praktisch in C:\-!!- not found -!!-\Microsoft\Signatures\ kopiert, wohin sie natürlich nicht wirklich gehören.
Weiß da vielleicht jemand weiter wo mein Fehler liegt?

Vielen Dank

Re: Winst copy Befehl "program files" Problem

Verfasst: 14 Nov 2008, 17:46
von d.oertel
Hallo,

%AppdataDir%
ist laut Winst-Handbuch z.B.
C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten
wobei %USERNAME% durch den aktuellen user ersetzt wird.
Im opsi Kontext wird ein Winstscript aber von einem Service ohne User ausgeführt
- daher der Fehler.
Wo soll die Datei nun hin?
<Glaskugelmodus>
In alle user-Profilverzeichnisse ?
</Glaskugelmodus>
Wenn ja:
Mal sowas probieren:

Code: Alles auswählen

[Aktionen]
DefVar $sigpath$
Set $sigpath$ = "Microsoft\Signatures\"
Files_copy  /AllNtUserProfiles

[Files_copy]
copy "%scriptpath%\defaultsig.*" "%UserProfileDir%\Anwendungsdaten\$sigpath$"

Siehe Winst-Handbuch Kapitel 7.1 (besonders 7.1.2).

Hilft das ?

gruss
detlef oertel

Re: Winst copy Befehl "program files" Problem

Verfasst: 17 Nov 2008, 08:26
von Sven.Beierlein
Mein Problem war eigentlich dass ich Dateien in Verzeichnisse kopieren möchte, welche ein Leerzeichen in der Namensgebung beeinhalten.
So wie eben bei einer englischen Version von Windows der "Program Files"-Ordner unter C:\
Das gelingt jedoch nicht, da er dann immer einen Fehler bringt wo er nach "Program" abbricht und der copy-Befehl ja eigentlich weitergeht.

Code: Alles auswählen


[Initial]
; Message at install time:
Message=Kopiere programmbeispiel Setup Files...
LogLevel=2
;  Log Errors in Logfile but don't abort:
ExitOnError=false
; Show syntax errors in the script:
ScriptErrorMessages=on
; Dont trace step by step through the script:
TraceMode=off
; let started programs run in front of the winst window
StayOnTop=false
 
[Aktionen]
DefVar $TEMP$ 
Set $TEMP$ = EnvVar("TEMP")
;Variables for OS version 
DefVar $OS$
set $OS$ = GetOS

; is this a win32 system ?
if ( $OS$ = "Windows_NT" OR $OS$ = "Windows_95" )
  if not(HasMinimumSpace ("%SYSTEMDRIVE%", "10 MB"))
    LogError "Nicht gengend Platz auf C: . 10 MB auf C: fuer programmbeispiel erforderlich."
    isFatalError
    ; Bearbeitung beenden und Produktschalter auf failed setzen
  else
    ; show product picture
    ShowBitmap /3 "%scriptpath%\kmw_opsi.bmp" "programmbeispiel"
  
    ; start setup program   
   
   sub_install_programmbeispiel
  
  endif
endif

[sub_install_common-cfg]
files_copy_winXP
Registry_runOnce

[files_copy_winXP]
copy "%scriptpath%\files\*.*" "c:\program files\programmbeispiel\setup\files"

[Registry_runOnce]
openkey [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
set "opsi_autologon_setup"="c:\program files\programmbeispiel\setup\files\setup.bat"