Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
add files needed to build the Windows Installer of Rakudo Star
  • Loading branch information
szabgab committed Jun 7, 2011
1 parent ff57d8f commit 81c1fdc
Show file tree
Hide file tree
Showing 2 changed files with 150 additions and 0 deletions.
118 changes: 118 additions & 0 deletions win32/rakudo.iss
@@ -0,0 +1,118 @@
; -- rakudo.iss --

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!
; using ISC 5.4.2(a)


[Setup]
AppName=Rakudo Star
AppVersion=2011.04
DefaultDirName=c:\rakudo
; Currently the installation path needs to be hard-coded
DisableDirPage=yes
DefaultGroupName=Rakudo Star
; UninstallDisplayIcon={app}\MyProg.exe
Compression=lzma2
SolidCompression=yes
SourceDir=c:\rakudo
OutputDir=c:\output
OutputBaseFilename=rakudo-star
;AppComments=
AppContact=http://rakudo.org/
; AppCopyright=
AppId=Rakudo_Star
; AppMutex= TODO!
AppPublisherURL=http://rakudo.org/

; ChangesAssociations=yes
ChangesEnvironment=yes
;InfoAfterFile=README_FIRST.txt


[Registry]

Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \
ValueName: "Path"; ValueType: expandsz; ValueData: "{olddata};{code:getPath}"; \
Check: NeedsAddPath('\rakudo\bin');
; Check: NeedsAddPath('\rakudo\install\bin');
; TODO: don't add the leading semi-colon to the Path if there is already a trailing one

[Files]
; Excludes: "cpan_sqlite_log*,cpan/build/*,cpan/sources/*,cpan/Bundle/*";
Source: "*"; DestDir: "{app}"; Flags: "recursesubdirs"

[Icons]
Name: "{group}\Rakudo REPL"; Filename: "{app}\bin\perl6.exe"; WorkingDir: "{app}"
Name: "{group}\Uninstall"; Filename: "{app}\unins000.exe"
; Name: "{group}\Rakudo README"; Filename: "{app}\share\doc\rakudo\README"


[Code]
function getPath(Param: String): string;
begin
// Result := ExpandConstant('{app}') + '\install\bin;'
Result := ExpandConstant('{app}') + '\bin;'
end;
// From http://stackoverflow.com/questions/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-installe
function NeedsAddPath(Param: string): boolean;
var
OrigPath: string;
begin
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path', OrigPath)
then begin
Result := True;
exit;
end;
// look for the path with leading and trailing semicolon
// Pos() returns 0 if not found
//Result := Pos(';' + ExpandConstant('{app}') + Param + ';', OrigPath) = 0;
Result := Pos(getPath(''), OrigPath) = 0;
end;
function RemovePath(): boolean;
var
OrigPath: string;
start_pos: Longint;
end_pos: Longint;
new_str: string;
begin
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path', OrigPath)
then begin
Result := True;
exit;
end;
start_pos := Pos(getPath(''), OrigPath);
end_pos := start_pos + Length(getPath(''));
new_str := Copy(OrigPath, 0, start_pos-1) + Copy(OrigPath, end_pos, Length(OrigPath));
RegWriteExpandStringValue(HKEY_LOCAL_MACHINE,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path', new_str);
Result := True;
end;
function InitializeUninstall(): Boolean;
begin
Result := True;
RemovePath();
end;
// Restrict the installation path to have no space
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result :=True;
case CurPageID of
wpSelectDir :
begin
if Pos(' ', ExpandConstant('{app}') ) <> 0 then
begin
MsgBox('You cannot install to a path containing spaces. Please select a different path.', mbError, mb_Ok);
Result := False;
end;
end;
end;
end;
32 changes: 32 additions & 0 deletions win32/rakudo.txt
@@ -0,0 +1,32 @@
This directory is for building the Windows installer for Rakudo Star.

You will need
- Strawberry Perl (eg. the one that comes with Padre from
http://padre.perlide.org/download.html )
padre-0.84-on-strawberry-5.12.3.0-v3.exe
- Inno Setup from http://www.jrsoftware.org/isinfo.php
5.4.2(a)

Download The source distribution of Rakudo Star from https://github.com/rakudo/star/downloads
ptar -xzf rakudo-star-2011.04.tar.gz
cd rakudo-star-2011.04

As currently the executable is not relocatable we need to decide
which directory to install. Currently it is c:\rakudo

Follow the insturctions in the README of Rakudo Star:

> perl Configure.pl --gen-parrot --prefix c:\rakudo
> gmake
> gmake install

Manually copy c:\strawberry\c\bin\libgcc_s_sjlj-1.dll to c:\rakudo\bin

Create a directory called c:\output where the resulting executable will be placed.
Then start the Inno Setup Compiler and open the rakudo.iss file.
Change the "AppVersion" field.

Click on "Build/Compile"

This should generate c:\output\rakudo-star.exe

0 comments on commit 81c1fdc

Please sign in to comment.