Mercurial > cgi-bin > hgweb.cgi > JpegWasher
diff package-files/windows/win32installer.iss @ 34:d175593317a8
Add a bunch of packaging stuff, NOT WORKING YET,
author | David Barts <n5jrn@me.com> |
---|---|
date | Wed, 29 Apr 2020 21:49:21 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/package-files/windows/win32installer.iss Wed Apr 29 21:49:21 2020 -0700 @@ -0,0 +1,288 @@ +; Inno Setup installer script for jEdit +; encoding=UTF-8Y +; (BOM seems the only way to let Inno Setup know the encoding) +; +; Björn "Vampire" Kautler <Vampire@jEdit.org> +; + +[Setup] +AllowNoIcons=true +AppContact=jedit-devel@lists.sourceforge.net +AppCopyright=Copyright © 1998-@current.year@ Contributors +AppID=jEdit +AppName=jEdit +AppPublisher=Contributors +AppPublisherURL=http://www.jEdit.org +AppReadmeFile={app}\doc\README.txt +AppSupportURL=http://www.jEdit.org +AppUpdatesURL=http://www.jEdit.org +AppVerName=jEdit @jedit.version@ +AppVersion=@jedit.version@ +ArchitecturesInstallIn64BitMode=x64 +ChangesAssociations=true +ChangesEnvironment=true +DefaultDirName={pf}\jEdit +DefaultGroupName=jEdit +FlatComponentsList=false +; Do not use LicenseFile here as the GPL does not require acceptance of +; the license for running the program, but still show it as information +InfoBeforeFile=@dist.dir.for.innosetup@\doc\COPYING.txt +OutputBaseFilename=@win.filename@ +OutputDir=@dist.dir.for.innosetup@ +SetupIconFile=@base.dir.for.innosetup@\icons\jedit.ico +ShowTasksTreeLines=true +SolidCompression=true +SourceDir=@dist.dir.for.innosetup@ +TimeStampsInUTC=true +UninstallDisplayIcon={app}\jedit.exe +UninstallDisplayName=jEdit @jedit.version@ +VersionInfoCompany=Contributors +VersionInfoCopyright=Copyright © 1998-@current.year@ Contributors +VersionInfoDescription=Programmer's Text Editor +VersionInfoTextVersion=@jedit.version@ +VersionInfoVersion=@jedit.build.number@ +WizardImageFile=@base.dir.for.innosetup@\icons\WindowsInstallerImage.bmp +WizardSmallImageFile=@base.dir.for.innosetup@\icons\WindowsInstallerSmallImage.bmp + +[Components] +Name: main; Description: jEdit - Programmer's Text Editor; Flags: fixed; Types: custom compact full +Name: apidoc; Description: {cm:APIDocumentation}; Types: full +Name: macros; Description: {cm:Macros}; Types: compact full + +[Tasks] +Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons} +Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons} +Name: autostartserver; Description: {cm:AutostartJEditServer}; GroupDescription: Autostart: + +[Files] +Source: @jar.filename@; DestDir: {app}; Flags: ignoreversion sortfilesbyextension sortfilesbyname; Components: main +Source: jedit.exe; DestDir: {app}; Flags: ignoreversion sortfilesbyextension sortfilesbyname; AfterInstall: updatePATHVariable; Components: main +Source: classes\package-files\windows\jEdit.url; DestDir: {app}; Flags: ignoreversion sortfilesbyextension sortfilesbyname; Components: main +Source: doc\*; DestDir: {app}\doc; Excludes: \doc\api\*; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension sortfilesbyname; Components: main +Source: doc\api\*; DestDir: {app}\doc\api; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension sortfilesbyname; Components: apidoc +Source: jars\QuickNotepad.jar; DestDir: {app}\jars; Flags: ignoreversion sortfilesbyextension sortfilesbyname; Components: main +Source: macros\*; DestDir: {app}\macros; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension sortfilesbyname; Components: macros +Source: keymaps\*; DestDir: {app}\keymaps; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension sortfilesbyname; Components: main +Source: modes\*; DestDir: {app}\modes; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension sortfilesbyname; Components: main +Source: properties\*; DestDir: {app}\properties; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension sortfilesbyname; Components: main +Source: startup\*; DestDir: {app}\startup; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension sortfilesbyname; Components: main + +[Icons] +Name: {group}\jEdit; Filename: {app}\jedit.exe; WorkingDir: {app}; Comment: jEdit - Programmer's Text Editor; HotKey: ctrl+alt+j +Name: {group}\{cm:ProgramOnTheWeb,jEdit}; Filename: {app}\jEdit.url; Comment: jEdit Website +Name: {group}\{cm:LaunchProgram,jEdit Server}; Filename: {app}\jedit.exe; Parameters: "-background -nogui --l4j-dont-wait"; WorkingDir: {app}; Comment: {cm:LaunchProgram,jEdit Server} +Name: {group}\{cm:QuitProgram,jEdit Server}; Filename: {app}\jedit.exe; Parameters: "-quit"; WorkingDir: {app}; Comment: {cm:QuitProgram,jEdit Server} +Name: {group}\{cm:UninstallProgram,jEdit}; Filename: {uninstallexe}; Comment: {cm:UninstallProgram,jEdit} +Name: {userdesktop}\jEdit; Filename: {app}\jedit.exe; Tasks: desktopicon; WorkingDir: {app}; Comment: jEdit - Programmer's Text Editor +Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\jEdit; Filename: {app}\jedit.exe; Tasks: quicklaunchicon; WorkingDir: {app}; Comment: jEdit - Programmer's Text Editor + +[Languages] +Name: en; MessagesFile: compiler:Default.isl +Name: de; MessagesFile: compiler:Languages\German.isl +Name: eu; MessagesFile: compiler:Languages\Basque.isl +Name: pt_BR; MessagesFile: compiler:Languages\BrazilianPortuguese.isl +Name: ca; MessagesFile: compiler:Languages\Catalan.isl +Name: cs; MessagesFile: compiler:Languages\Czech.isl +Name: da; MessagesFile: compiler:Languages\Danish.isl +Name: nl; MessagesFile: compiler:Languages\Dutch.isl +Name: fi; MessagesFile: compiler:Languages\Finnish.isl +Name: fr; MessagesFile: compiler:Languages\French.isl +Name: he; MessagesFile: compiler:Languages\Hebrew.isl +Name: hu; MessagesFile: compiler:Languages\Hungarian.isl +Name: it; MessagesFile: compiler:Languages\Italian.isl +Name: ja; MessagesFile: compiler:Languages\Japanese.isl +Name: no; MessagesFile: compiler:Languages\Norwegian.isl +Name: pl; MessagesFile: compiler:Languages\Polish.isl +Name: pt; MessagesFile: compiler:Languages\Portuguese.isl +Name: ru; MessagesFile: compiler:Languages\Russian.isl +Name: sk; MessagesFile: compiler:Languages\Slovak.isl +Name: sl; MessagesFile: compiler:Languages\Slovenian.isl +Name: es; MessagesFile: compiler:Languages\Spanish.isl + +[CustomMessages] +; Default messages +APIDocumentation=API Documentation (for macro and plugin development) +Macros=Default set of macros (highly recommended) +AutostartJEditServer=Start jEdit Server automatically on system startup +QuitProgram=Quit %1 +OpenWithProgram=Open with %1 +pleaseQuitJEdit=The installer will now try to quit a running instance of jEdit.%nPlease save your work and exit jEdit for the installation to continue. +ViewFile=View %1 +; German messages +de.APIDocumentation=API Dokumentation (für Macro und Plugin Entwicklung) +de.Macros=Standard Makros (sehr empfohlen) +de.AutostartJEditServer=jEdit Server automatisch beim Hochfahren starten +de.QuitProgram=%1 beenden +de.OpenWithProgram=Mit %1 öffnen +de.pleaseQuitJEdit=Die Installation wird nun versuchen eine laufende Instanz von jEdit zu beenden.%nBitte speichern Sie Ihre Arbeit und beenden Sie jEdit um mit der Installation fortzufahren. +de.ViewFile=%1 anzeigen +; French messages +fr.APIDocumentation=API Documentation (pour développement de Macro et Plugin) +fr.Macros=Macros standards (vraiment recommandées) +fr.AutostartJEditServer=Démarrer automatiquement le serveur jEdit au démarrage de l'ordinateur +fr.QuitProgram=Quitter %1 +fr.OpenWithProgram=Ouvrir avec %1 +fr.pleaseQuitJEdit=L'installation va tenter à présent de quitter une instance de jEdit en cours.%nVeuillez enregistrer votre travail et quitter jEdit afin de poursuivre l'installation. +fr.ViewFile=Afficher %1 + +[Registry] +Root: HKCR; Subkey: *\Shell; Flags: uninsdeletekeyifempty +Root: HKCR; Subkey: *\Shell\{cm:OpenWithProgram,jEdit}; Flags: uninsdeletekey +Root: HKCR; Subkey: *\Shell\{cm:OpenWithProgram,jEdit}\Command; ValueType: string; ValueData: """{app}\jedit.exe"" ""%1""" +Root: HKCR; Subkey: *\Shell\{cm:OpenWithProgram,jEdit}; ValueName: Icon; ValueType: string; ValueData: "{app}\jedit.exe" +Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: jEdit Server; ValueData: """{app}\jedit.exe"" -background -nogui --l4j-dont-wait"; Flags: uninsdeletevalue; Tasks: autostartserver + +[Run] +Filename: {app}\jedit.exe; Description: {cm:ViewFile,README}; Parameters: "--l4j-dont-wait -nosettings ""{app}\doc\README.txt"""; WorkingDir: {app}; Flags: nowait postinstall skipifsilent +Filename: {app}\jedit.exe; Description: {cm:ViewFile,CHANGES}; Parameters: "--l4j-dont-wait -nosettings ""{app}\doc\CHANGES.txt"""; WorkingDir: {app}; Flags: nowait postinstall skipifsilent +Filename: {app}\jedit.exe; Description: {cm:LaunchProgram,jEdit}; Parameters: "--l4j-dont-wait"; WorkingDir: {app}; Flags: nowait postinstall skipifsilent; Tasks: not autostartserver +Filename: {app}\jedit.exe; Description: {cm:LaunchProgram,jEdit}; Parameters: "--l4j-dont-wait -background"; WorkingDir: {app}; Flags: nowait postinstall skipifsilent; Tasks: autostartserver + +[Code] +function findPathLine(lines: Array Of String): Integer; +var + i : Integer; +begin + for i := 0 to GetArrayLength(lines) - 1 do begin + if Uppercase(Copy(Trim(lines[i]),1,5)) = 'PATH=' then begin + Result := i; + end; + end; +end; + +function appendAppDirIfNecessary(var path: String): Boolean; +var + appDir : String; +begin + appDir := ExpandConstant('{app}'); + if Pos(Uppercase(appDir),Uppercase(path)) = 0 then begin + if Copy(path,Length(path),1) <> ';' then begin + path := path + ';'; + end; + path := path + appDir; + Result := true; + end else begin + Result := false; + end; +end; + +procedure updatePATHVariableInRegistry; +var + path : String; +begin + RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment','Path',path); + if appendAppDirIfNecessary(path) then begin + RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment','Path',path); + end; +end; + +procedure updatePATHVariableInAutoexecBat; +var + lines : Array Of String; + pathLine : Integer; + path : String; +begin + LoadStringsFromFile(ExpandConstant('{sd}\AUTOEXEC.BAT'),lines); + pathLine := findPathLine(lines); + if pathLine = -1 then begin + pathLine := GetArrayLength(lines); + SetArrayLength(lines,pathLine + 1); + lines[pathLine] := 'PATH='; + end; + path := Trim(lines[pathLine]); + if appendAppDirIfNecessary(path) then begin + lines[pathLine] := path; + SaveStringsToFile(ExpandConstant('{sd}\AUTOEXEC.BAT'),lines,false); + end; +end; + +procedure updatePATHVariable; +begin + if UsingWinNT then begin + updatePATHVariableInRegistry; + end else begin + updatePATHVariableInAutoexecBat; + end; +end; + +function removeAppDirIfNecessary(var path: String): Boolean; +var + appDir : String; + position : Integer; +begin + appDir := ExpandConstant('{app}'); + position := Pos(Uppercase(appDir),Uppercase(path)); + if position = 0 then begin + Result := false; + end else begin + Delete(path,position,Length(appDir)); + if Copy(path,position,1) = ';' then begin + Delete(path,position,1); + end; + Result := true; + end; +end; + +procedure cleanPATHVariableInRegistry; +var + path : String; +begin + RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment','Path',path); + if removeAppDirIfNecessary(path) then begin + RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment','Path',path); + end; +end; + +procedure cleanPATHVariableInAutoexecBat; +var + lines : Array Of String; + pathLine : Integer; + path : String; +begin + LoadStringsFromFile(ExpandConstant('{sd}\AUTOEXEC.BAT'),lines); + pathLine := findPathLine(lines); + if pathLine <> -1 then begin + path := Trim(lines[pathLine]); + if removeAppDirIfNecessary(path) then begin + lines[pathLine] := path; + SaveStringsToFile(ExpandConstant('{sd}\AUTOEXEC.BAT'),lines,false); + end; + end; +end; + +procedure cleanPATHVariable; +begin + if UsingWinNT then begin + cleanPATHVariableInRegistry; + end else begin + cleanPATHVariableInAutoexecBat; + end; +end; + +procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); +begin + if CurUninstallStep = usPostUninstall then begin + cleanPATHVariable; + end; +end; + +procedure quitJEdit; +var + resultCode : Integer; +begin + case SuppressibleMsgBox(CustomMessage('pleaseQuitJEdit'),mbConfirmation,MB_OKCANCEL or MB_DEFBUTTON2, IDYES) of + IDOK: begin + ExtractTemporaryFile('@jar.filename@'); + ExtractTemporaryFile('jedit.exe'); + ExecAsOriginalUser(ExpandConstant('{tmp}/jedit.exe'),'-quit',ExpandConstant('{tmp}'),SW_SHOW,ewWaitUntilTerminated,resultCode); + end; + IDCANCEL: Abort; + end; +end; + +procedure CurStepChanged(CurStep: TSetupStep); +begin + if CurStep = ssInstall then begin + quitJEdit; + end; +end;