Sehe ich auch so, ich nutze Lazarus auf der Arbeit, zu Hause und unterwegs beim Kunden unter Windows.
Unter
http://www.lazarusforum.de/viewtopic.php?f=2&t=4805 habe ich meine Batch-Datei und ein Paar Infos abgelegt!
Meistens richte ich es so ein das das Laufwerk immer den selben Buchstaben hat dann brauche ich nichts zu ändern, falls der Laufwerksbuchstabe schon belegt ist nutze ich ein kleines Programm das alle Laufwerksbuchstaben in der fpc.cfg und in allen Config-Files durch den aktuellen ersetzt.
Code: Alles auswählen
// *****************************************************************************
// Title.............. : relocate Lazarus Config Files
//
// Modulname ......... : relocateLaz.lpr
// Type .............. : Lazarus Project File
// Author ............ : Udo Schmal
// Development Status : 31.12.2010
// Operating System .. : Win32/Win64
// IDE ............... : Lazarus
// *****************************************************************************
program relocateLaz;
//#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
{$mode objfpc}{$H+}
{$R relocateLaz.res}
uses
Classes, SysUtils, RegExpr;
var
sDrive, sAppPath: string;
procedure relocatePath(filename: string);
var TS: TStringList;
begin
if FileExists(filename) then
begin
TS:= TStringList.Create;
try
TS.LoadFromFile(filename);
RegExprModifierI := true;
RegExprModifierG := true;
RegExprModifierM := true;
TS.Text := ReplaceRegExpr('="[A-Za-z]{1}:\\lazarus', TS.Text, '="'+sDrive+'\\lazarus', true);
TS.Text := ReplaceRegExpr('="%CD:~0,2%\\lazarus', TS.Text, '="'+sDrive+'\\lazarus', true);
TS.Text := ReplaceRegExpr('="0:[A-Za-z]{1}:\\lazarus', TS.Text, '="0:'+sDrive+'\\lazarus', true);
TS.Text := ReplaceRegExpr('="file://[A-Za-z]{1}:/lazarus', TS.Text, '="file://'+sDrive+'/lazarus', true);
TS.Text := ReplaceRegExpr('-F([A-Za-z]{1})[A-Za-z]{1}:\\lazarus', TS.Text, '-F$1'+sDrive+'\\lazarus', true);
TS.Text := ReplaceRegExpr(':[A-Za-z]{1}:\\lazarus', TS.Text, ':'+sDrive+'\\lazarus', true);
TS.Text := ReplaceRegExpr('="[A-Za-z]{1}:\\tools', TS.Text, '="'+sDrive+'\\tools', true);
TS.Text := ReplaceRegExpr('="%CD:~0,2%\\tools', TS.Text, '="'+sDrive+'\\tools', true);
TS.Text := ReplaceRegExpr('="0:[A-Za-z]{1}:\\tools', TS.Text, '="0:'+sDrive+'\\tools', true);
TS.Text := ReplaceRegExpr('="file://[A-Za-z]{1}:/tools', TS.Text, '="file://'+sDrive+'/tools', true);
TS.Text := ReplaceRegExpr('-F([A-Za-z]{1})[A-Za-z]{1}:\\tools', TS.Text, '-F$1'+sDrive+'\\tools', true);
TS.Text := ReplaceRegExpr(':[A-Za-z]{1}:\\tools', TS.Text, ':'+sDrive+'\\tools', true);
TS.SaveToFile(filename);
finally
TS.Free;
end;
end;
end;
procedure UpdateFiles(path: string);
var
SearchRec: TSearchRec;
begin
if DirectoryExists(path) then
begin
if FindFirst(path + '*.*', faAnyFile, SearchRec) = 0 then
repeat
if not(SearchRec.Name='..') and not(SearchRec.Name='.') then
if (SearchRec.Attr and faDirectory) = 0 then
relocatePath(path + SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
begin
WriteLn('relocating Lazarus ...');
sDrive := ExtractFileDrive(Paramstr(0));
sAppPath := ExtractFilePath(Paramstr(0));
UpdateFiles(sAppPath + 'AppData\');
UpdateFiles(sAppPath + 'AppData\projectsessions\');
relocatePath(sAppPath + 'fpc\' + {$i %FPCVERSION%} + '\bin\' + {$i %FPCTARGETCPU%} + '-' + {$i %FPCTARGETOS%} + '\fpc.cfg');
relocatePath(sAppPath + 'environmentoptions.xml');
end.