Win-Installer: ability to create secondary installations.

git-svn-id: trunk@42516 -
This commit is contained in:
martin 2013-08-29 11:38:48 +00:00
parent eca628b4c1
commit f7a27c9f1e
2 changed files with 51 additions and 49 deletions

View File

@ -20,6 +20,7 @@ FolderNotEmpty2=The target folder is not empty.
FolderForSecondNoFile=The target folder is not empty and does not contains an upgradable secondary Lazarus installation.%0:sPlease choose an empty folder, or an folder with an existing secondary Lazarus installation for updating.
FolderForSecondBadFile=The target folder is not empty. The installer could not detect if it contains an upgradable secondary Lazarus installation%0:sPlease choose an empty folder, or an folder with an existing secondary Lazarus installation for updating.
FolderForSecondUpgrading=The target folder is not empty.%0:sIt contains a secondary Lazarus installation using the following folder for configuration:%0:s%1:s%0:s%0:sContinue with installation?
FolderForSecondUpgradingPrimary=The target folder is not empty.%0:sIt contains a default (none secondary) Lazarus installation%0:sIf you continue, it will be changed into a secondary installation%0:s%0:s%0:sContinue with installation?
FolderForSecondBadUninstall=The target folder is not empty. The installer could not verify if it is safe to use.%0:sPlease choose an empty folder, or an folder with an existing secondary Lazarus installation for updating.

View File

@ -303,6 +303,29 @@ var
UninstDir: String;
CFGFileForUninstDir: TStringList;
function GetDefDir( def: String ) : String;
begin
if Pos( ' ', def ) > 0 then
begin
def := Copy( def, 1, Pos( ' ', def ) - 1 ) + '\NoFolderSpace';
end;
Result := def;
end;
procedure UpdateEnvironmentOptions();
var
FileName, Content: string;
s: Ansistring;
begin
FileName := ExpandConstant(CurrentFileName);
LoadStringFromFile(FileName, s);
Content := s;
StringChange(Content, '%Temp%', GetTempDir);
StringChange(Content, '%LazDir%', ExpandConstant('{app}'));
StringChange(Content, '%FpcBinDir%', ExpandConstant('{app}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}\'));
SaveStringToFile(FileName, Content, False);
end;
function GetAppId(param:string): String;
var
s: String;
@ -512,6 +535,13 @@ begin
CheckSecondLabel.Height := WizardForm.DirEdit.Parent.Height - CheckSecondLabel.Top - 15;
CheckSecondLabel.Caption := CustomMessage('CheckSecondInfo');
end;
if CurPage = wpInfoAfter then begin
if (CheckSecondInstall <> nil) and (CheckSecondInstall.Checked) then begin
if (NewCFGFile = nil) or (not FileExists(AddBackslash(WizardDirValue) + 'lazarus.cfg')) then
MsgBox('Something went wrong. The secondary config folder was not setup. Repeat the installation.', mbConfirmation, MB_OK);
end;
end;
end;
function NextButtonClick(CurPage: Integer): Boolean;
@ -610,12 +640,6 @@ begin
CreateCFGFile(SecondPCP, NewCFGFile);
end;
if CurPage = wpInfoAfter then begin
if (CheckSecondInstall <> nil) and (CheckSecondInstall.Checked) then begin
if (NewCFGFile = nil) or (not FileExists(AddBackslash(WizardDirValue) + 'lazarus.cfg')) then
MsgBox('Something went wrong. The secondary config folder was not setup. Repeat the installation.', mbConfirmation, MB_OK);
end;
end;
end;
function ShouldSkipPage(PageId: Integer): Boolean;
@ -697,49 +721,6 @@ begin
end;
end;
function GetDefDir( def: String ) : String;
begin
if Pos( ' ', def ) > 0 then
begin
def := Copy( def, 1, Pos( ' ', def ) - 1 ) + '\NoFolderSpace';
end;
Result := def;
end;
procedure UpdateEnvironmentOptions();
var
FileName, Content: string;
s: Ansistring;
begin
FileName := ExpandConstant(CurrentFileName);
LoadStringFromFile(FileName, s);
Content := s;
StringChange(Content, '%Temp%', GetTempDir);
StringChange(Content, '%LazDir%', ExpandConstant('{app}'));
StringChange(Content, '%FpcBinDir%', ExpandConstant('{app}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}\'));
SaveStringToFile(FileName, Content, False);
end;
function IsHKLMWriteable(): boolean;
begin
Result := IsAdminLoggedOn or IsPowerUserLoggedOn;
end;
function IsHKLMNotWriteable: boolean;
begin
Result := not IsHKLMWriteable();
end;
function GetAssociateDesc(const ext: string): string;
var
AmpersandPos: integer;
begin
Result := FmtMessage(CustomMessage('AssocFileExtension'), ['Lazarus',ext]);
AmpersandPos := pos('&', Result);
if AmpersandPos>0 then
Delete(Result, AmpersandPos, 1);
end;
procedure InitAskUninstall(s1, s2, s3, s4: String);
var
y: integer;
@ -996,6 +977,26 @@ begin
end;
function IsHKLMWriteable(): boolean;
begin
Result := IsAdminLoggedOn or IsPowerUserLoggedOn;
end;
function IsHKLMNotWriteable: boolean;
begin
Result := not IsHKLMWriteable();
end;
function GetAssociateDesc(const ext: string): string;
var
AmpersandPos: integer;
begin
Result := FmtMessage(CustomMessage('AssocFileExtension'), ['Lazarus',ext]);
AmpersandPos := pos('&', Result);
if AmpersandPos>0 then
Delete(Result, AmpersandPos, 1);
end;
//function InitializeUninstall(): Boolean;
//var i: integer;
//begin