luaforwindows/LuaForWindows.iss

579 lines
36 KiB
Plaintext

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; File: LuaForWindows.iss
; Author: Ryan Pusztai <rpusztai@gmail.com>
; Date: 05/13/2008
; License:
; Copyright (C) 2008-2015 Ryan Pusztai.
;
; Permission is hereby granted, free of charge, to any person obtaining a copy
; of this software and associated documentation files (the "Software"), to deal
; in the Software without restriction, including without limitation the rights
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
; copies of the Software, and to permit persons to whom the Software is
; furnished to do so, subject to the following conditions:
;
; The above copyright notice and this permission notice shall be included in
; all copies or substantial portions of the Software.
;
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
; THE SOFTWARE.
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; -- General Installer configuration
#define MyAppVer "5.1.5.52"
#define MyAppDisplayVer "5.1.5-52"
#define MyAppName "Lua"
#define MyAppDisplayName "Lua for Windows"
#define MyAppPublisher "The Lua for Windows Project and Lua and Tecgraf, PUC-Rio"
#define MyAppURL "http://github.com/rjpcomputing/luaforwindows"
#define MyAppExeName "lua.exe"
#define AppMinVer "5.1.3.46"
; -- Dependancy handling configuration
; Comment out the #define DOWNLOAD_FILES if you want to build the
; dependencies into the installer.
;#define DOWNLOAD_FILES
#define vcRedistURL "http://github.com/rjpcomputing/luaforwindows/releases/download/vc-runtime/vcredist_x86.4053.exe"
; -- Pre-Build Step.
;#expr Exec( "create_install_files_pkg.bat", NULL, ".", 1, SW_SHOWMINIMIZED )
[Setup]
AppName={#MyAppName}
AppVerName={#MyAppDisplayName} {#MyAppDisplayVer}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}\5.1
DisableDirPage=false
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=false
AllowNoIcons=true
OutputBaseFilename=LuaForWindows_v{#MyAppDisplayVer}
Compression=lzma/ultra
SolidCompression=true
InternalCompressLevel=ultra
OutputDir=.
ShowLanguageDialog=yes
AppVersion={#MyAppVer}
WizardImageFile=compiler:WizModernImage-IS.bmp
WizardSmallImageFile=compiler:WizModernSmallImage-IS.bmp
VersionInfoVersion={#MyAppVer}
VersionInfoDescription={#MyAppName}
ChangesAssociations=true
ChangesEnvironment=true
LicenseFile=files/LICENSE.txt
MinVersion=0,5.0.2195
PrivilegesRequired=none
UninstallFilesDir={app}\uninstall
UninstallDisplayIcon={app}\lua.exe
[Messages]
BeveledLabel={#MyAppDisplayName} v{#MyAppDisplayVer}
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: blackscheme; Description: Use a black background syntax highlight theme for script editor; GroupDescription: Additional schemes:; Flags: unchecked
[Files]
; -- Main Lua files.
Source: files\bin2c5.1.exe; DestDir: {app}; DestName: bin2c.exe; Flags: ignoreversion
Source: files\LICENSE.txt; DestDir: {app}; Flags: ignoreversion
Source: files\lua5.1.dll; DestDir: {app}; Flags: ignoreversion
Source: files\lua5.1.exe; DestDir: {app}; DestName: lua.exe; Flags: ignoreversion
Source: files\lua51.dll; DestDir: {app}; Flags: ignoreversion
Source: files\luac5.1.exe; DestDir: {app}; DestName: luac.exe; Flags: ignoreversion
Source: files\wlua5.1.exe; DestDir: {app}; DestName: wlua.exe; Flags: ignoreversion
Source: files\metalua.bat; DestDir: {app}; Flags: ignoreversion
Source: files\luadoc_start.bat; DestDir: {app}; Flags: ignoreversion
Source: files\lExecutor.wlua; DestDir: {app}; Flags: ignoreversion
Source: files\ilua.cmd; DestDir: {app}; Flags: ignoreversion
; -- LuaRocks files
Source: files\luarocks.bat; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\luarocks-admin.bat; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\7z.dll; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\7z.exe; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\luarocks.lua; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\luarocks_config.lua; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\luarocks-admin.lua; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\rclauncher.o; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\rclauncher.obj; DestDir: {app}; Flags: ignoreversion; Components: luarocks
Source: files\rocks\*; DestDir: {app}\rocks; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: luarocks
Source: files\lua\luarocks\*; DestDir: {app}\lua\luarocks; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: luarocks
; -- Other files and modules.
Source: files\clibs\*; DestDir: {app}\clibs; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: modules
Source: files\docs\*; DestDir: {app}\docs; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: docs
Source: files\examples\*; DestDir: {app}\examples; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: examples
Source: files\include\*; DestDir: {app}\include; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: moduledevel
Source: files\lib\*; DestDir: {app}\lib; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: moduledevel
Source: files\lua\*; DestDir: {app}\lua; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\, luarocks\*; Components: modules
Source: files\utils\*; DestDir: {app}\utils; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: modules
Source: support\Microsoft.VC80.CRT.SP1\*; DestDir: {app}\Microsoft.VC80.CRT; Flags: ignoreversion; Excludes: .git\; Check: IsNonAdminLoggedOn
Source: support\Microsoft.VC80.CRT.SP1\*; DestDir: {app}\clibs\Microsoft.VC80.CRT; Flags: ignoreversion; Excludes: .git\; Components: modules; Check: IsNonAdminLoggedOn
Source: support\Microsoft.VC80.CRT\*; DestDir: {app}\clibs\alien\Microsoft.VC80.CRT; Flags: ignoreversion; Excludes: .git\; Components: modules; Check: IsNonAdminLoggedOn
Source: support\Microsoft.VC80.CRT.SP1\*; DestDir: {app}\clibs\md5\Microsoft.VC80.CRT; Flags: ignoreversion; Excludes: .git\; Components: modules; Check: IsNonAdminLoggedOn
Source: support\Microsoft.VC80.CRT.SP1\*; DestDir: {app}\clibs\mime\Microsoft.VC80.CRT; Flags: ignoreversion; Excludes: .git\; Components: modules; Check: IsNonAdminLoggedOn
Source: support\Microsoft.VC80.CRT.SP1\*; DestDir: {app}\clibs\socket\Microsoft.VC80.CRT; Flags: ignoreversion; Excludes: .git\; Components: modules; Check: IsNonAdminLoggedOn
Source: support\*; DestDir: {app}\install\support; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\
#ifdef DOWNLOAD_FILES
Source: support\isxdl.dll; DestDir: {tmp}; Flags: dontcopy
Source: {src}\vcredist_x86.exe; DestDir: {app}\install\support; Flags: ignoreversion external; Check: ShouldCopyVc8Runtime
#else
Source: vcredist_x86.exe; DestDir: {app}\install\support; Flags: ignoreversion; Excludes: .git\
#endif
Source: LuaForWindows.iss; DestDir: {app}\install; Flags: ignoreversion; Excludes: .git\
Source: changes.txt; DestDir: {app}; Flags: ignoreversion; Excludes: .git\
Source: todo.txt; DestDir: {app}; Flags: ignoreversion; Excludes: .git\
; -- SciTE files
Source: SciTE\*; DestDir: {app}\SciTE; Flags: ignoreversion recursesubdirs createallsubdirs; Excludes: .git\; Components: editors/scite
Source: support\SciTEGlobal.black.properties; DestDir: {app}\SciTE; DestName: SciTEGlobal.properties; Tasks: blackscheme; Components: editors/scite; Flags: ignoreversion
[InstallDelete]
Name: {app}\lua\pl; Type: filesandordirs
Name: {app}\docs\bitlib; Type: filesandordirs
Name: {app}\docs\penlight; Type: filesandordirs
Name: {app}\examples\bitlib; Type: filesandordirs
Name: {app}\examples\penlight; Type: filesandordirs
Name: {app}\examples\iup\tree_set_attrs.lua; Type: filesandordirs
; Cleanup the old file.
Name: {app}\install\Lua.iss; Type: files
[Icons]
Name: {group}\Lua (Command Line); WorkingDir: {app}; Filename: {app}\lua.exe; Components: main
Name: {group}\iLua (Friendly Lua Command Line); WorkingDir: {app}; Filename: {app}\ilua.cmd; Components: main
Name: {group}\lExecutor; WorkingDir: {app}; Filename: {app}\lExecutor.wlua; Components: main
Name: {group}\LuaForWindows Documentation; Filename: {app}\docs\luaforwindows.html; Components: main
Name: {group}\QuickLuaTour; Filename: {app}\Examples\quickluatour.lua; Components: examples
Name: {group}\{#MyAppName} Examples; Filename: {app}\Examples; Components: examples
Name: {group}\Documentation\{#MyAppName} Module Documentation; Filename: {app}\docs; Components: docs
Name: {group}\Documentation\Lua Quick Reference; Filename: {app}\docs\luarefv51.html; Components: docs
Name: {group}\Documentation\Lua 5.1 Reference Manual; Filename: {app}\docs\lua5_1_4_Docs.chm; Components: docs
Name: {group}\Documentation\lExecutor Documentation; Filename: {app}\docs\lexecutor\lExecutor.html; Components: docs
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon
; -- SciTE icons.
Name: {group}\SciTE; Filename: {app}\SciTE\scite.exe; Components: editors/scite
Name: {commondesktop}\SciTE; Filename: {app}\SciTE\scite.exe; Tasks: desktopicon; Components: editors/scite
[Run]
Filename: {app}\Examples\quickluatour.lua; Description: Run a simple introduction to Lua.; WorkingDir: {app}; Flags: nowait postinstall skipifsilent unchecked shellexec; Components: examples
Filename: {app}/install/support/vcredist_x86.exe; Parameters: "/q:a /c:""VCREDI~3.EXE /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; StatusMsg: Installing Microsoft Visual C++ 2005 SP1 Redistributable...; Check: ShouldInstallVc8Runtime
[INI]
Filename: {group}\Documentation\{#MyAppName} On The Web.url; Section: InternetShortcut; Key: URL; String: http://lua.org/
Filename: {group}\Documentation\Lua PiL Book.url; Section: InternetShortcut; Key: URL; String: http://www.lua.org/pil/; Components: docs
Filename: {app}\docs\Lua PiL Book.url; Section: InternetShortcut; Key: URL; String: http://www.lua.org/pil/; Components: docs
[UninstallDelete]
Type: files; Name: {app}\{#MyAppName}.url
Type: files; Name: {app}\docs\Lua PiL Book.url
Type: files; Name: {app}\docs\lua5_1_3_Docs.chm
Type: filesandordirs; Name: {group}
[Components]
Name: main; Description: Lua (required); Flags: fixed dontinheritcheck checkablealone; Types: full compact custom
Name: editors; Description: Script Editors; Flags: dontinheritcheck disablenouninstallwarning; Types: full custom
Name: editors/scite; Description: SciTE (IDE with debugging); Flags: disablenouninstallwarning exclusive; Types: full custom
Name: modules; Description: Lua Modules; Flags: dontinheritcheck checkablealone disablenouninstallwarning; Types: full custom
Name: luarocks; Description: LuaRocks Module Installer (Experimental); Flags: dontinheritcheck checkablealone disablenouninstallwarning; Types: full custom
Name: moduledevel; Description: Lua Module Development files (libs and headers); Flags: dontinheritcheck checkablealone disablenouninstallwarning; Types: full custom
Name: docs; Description: Documentation; Flags: dontinheritcheck checkablealone disablenouninstallwarning; Types: full custom
Name: examples; Description: Examples; Flags: dontinheritcheck checkablealone disablenouninstallwarning; Types: full custom
[Registry]
; -- Add the Lua file associations.
Root: HKCR; SubKey: .lua; ValueType: string; ValueData: {#MyAppName}.Script; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .lua\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .lua\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile.ico; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Script; ValueType: string; ValueData: {#MyAppName} Script File; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\{#MyAppExeName}"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .wlua; ValueType: string; ValueData: w{#MyAppName}.Script; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .wlua\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .wlua\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: w{#MyAppName}.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile.ico; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: w{#MyAppName}.Script; ValueType: string; ValueData: w{#MyAppName} Script File; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: w{#MyAppName}.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\w{#MyAppExeName}"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsAdminLoggedOn
Root: HKCR; SubKey: w{#MyAppName}.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
Root: HKCR; SubKey: w{#MyAppName}.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .lexe; ValueType: string; ValueData: lExecutor.Script; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .lexe\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .lexe\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: lExecutor.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\lexe.ico; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: lExecutor.Script; ValueType: string; ValueData: lExecutor Script File; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: lExecutor.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\w{#MyAppExeName}"" ""{app}\lExecutor.wlua"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsAdminLoggedOn
Root: HKCR; SubKey: lExecutor.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
Root: HKCR; SubKey: lExecutor.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
;
Root: HKCR; SubKey: .luac; ValueType: string; ValueData: {#MyAppName}.Compiled; Flags: uninsdeletekey; Check: IsAdminLoggedOn
;Root: HKCR; SubKey: .luac\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsAdminLoggedOn
;Root: HKCR; SubKey: .luac\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Compiled\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile3.ico; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Compiled; ValueType: string; ValueData: {#MyAppName} Compiled File; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: {#MyAppName}.Compiled\Shell\Open\Command; ValueType: string; ValueData: """{app}\{#MyAppExeName}"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .mlua; ValueType: string; ValueData: Meta{#MyAppName}.Script; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .mlua\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: .mlua\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: Meta{#MyAppName}.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile2.ico; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: Meta{#MyAppName}.Script; ValueType: string; ValueData: Meta{#MyAppName} Script File; Flags: uninsdeletekey; Check: IsAdminLoggedOn
Root: HKCR; SubKey: Meta{#MyAppName}.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\metalua.bat"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsAdminLoggedOn
Root: HKCR; SubKey: Meta{#MyAppName}.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
Root: HKCR; SubKey: Meta{#MyAppName}.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsAdminLoggedOn
; -- Limited user Lua file associations.
Root: HKCU; SubKey: SOFTWARE\Classes\.lua; ValueType: string; ValueData: {#MyAppName}.Script; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.lua\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.lua\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile.ico; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Script; ValueType: string; ValueData: {#MyAppName} Script File; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\{#MyAppExeName}"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.wlua; ValueType: string; ValueData: w{#MyAppName}.Script; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.wlua\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.wlua\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\w{#MyAppName}.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile.ico; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\w{#MyAppName}.Script; ValueType: string; ValueData: w{#MyAppName} Script File; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\w{#MyAppName}.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\w{#MyAppExeName}"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\w{#MyAppName}.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\w{#MyAppName}.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.lexe; ValueType: string; ValueData: lExecutor.Script; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.lexe\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.lexe\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\lExecutor.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\lexe.ico; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\lExecutor.Script; ValueType: string; ValueData: lExecutor Script File; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\lExecutor.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\w{#MyAppExeName}"" ""{app}\lExecutor.wlua"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\lExecutor.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\lExecutor.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.luac; ValueType: string; ValueData: {#MyAppName}.Compiled; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
;Root: HKCU; SubKey: SOFTWARE\Classes\.luac\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
;Root: HKCU; SubKey: SOFTWARE\Classes\.luac\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Compiled\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile3.ico; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Compiled; ValueType: string; ValueData: {#MyAppName} Compiled File; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\{#MyAppName}.Compiled\Shell\Open\Command; ValueType: string; ValueData: """{app}\{#MyAppExeName}"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.mlua; ValueType: string; ValueData: Meta{#MyAppName}.Script; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.mlua\Content Type; ValueType: string; ValueData: text/plain; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\.mlua\PerceivedType; ValueType: string; ValueData: text; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\Meta{#MyAppName}.Script\DefaultIcon; ValueType: string; ValueData: {app}\install\support\luafile2.ico; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\Meta{#MyAppName}.Script; ValueType: string; ValueData: Meta{#MyAppName} Script File; Flags: uninsdeletekey; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\Meta{#MyAppName}.Script\Shell\Open\Command; ValueType: string; ValueData: """{app}\metalua.bat"" ""%1"" %*"; Flags: uninsdeletevalue; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\Meta{#MyAppName}.Script\Shell\Edit; ValueType: string; ValueData: Edit Script; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
Root: HKCU; SubKey: SOFTWARE\Classes\Meta{#MyAppName}.Script\Shell\Edit\Command; ValueType: expandsz; ValueData: """{app}\SciTE\scite.exe"" ""%1"""; Flags: uninsdeletevalue; Components: editors/scite; Check: IsNonAdminLoggedOn
[Code]
// -- Misc Functions
// -- Checks to see if a non-administrator is logged on.
function IsNonAdminLoggedOn(): boolean;
begin
if IsAdminLoggedOn() then begin
Result := false;
end else begin
Result := true;
end;
end;
// -- Checks to see if the VC 8.0 run-time is installed.
function IsVc8RuntimeInstalled(): boolean;
begin
Result := RegValueExists( HKLM, 'Software\Microsoft\DevDiv\VC\Servicing\8.0\RED\1033', 'Install' );
end;
// -- Checks to see if the VC 8.0 run-time is already installed and determines if it should be installed.
function ShouldInstallVc8Runtime(): boolean;
begin
if IsVc8RuntimeInstalled() then begin
// Already installed so no need to re-install.
Result := false;
end else begin
if IsAdminLoggedOn() then begin
Result := true;
end else begin
SuppressibleMsgBox( 'The Microsoft Visual C++ 2005 Redistributable doesn''t appear to be installed and requires administrator privileges.' #13 #13 'Please run "vcredist_x86.exe", as an Administrator, from' #13 ' ' + ExpandConstant( '{app}\install\support\vcredist_x86.exe' ) + #13 'after the install finishes.' #13 #13 'NOTE: Lua will have limited or no functionality, so please do this as soon as possible.' , mbInformation, MB_OK, IDOK );
Result := false;
end;
end;
end;
// -- Checks to see if the VC 8.0 run-time needs to be copied
function ShouldCopyVc8Runtime(): boolean;
begin
Result := not IsVc8RuntimeInstalled();
end;
// -- Updates specified environment variable.
procedure UpdateEnvironmentVariable( const environmentVariable: String; const stringToAdd: String );
var
value: String;
newVal: String;
idx: Integer;
begin
// Get the old value so the new value can be appended.
// Also check if you have administrative rights so that we can read
// from the right location. This is because reads are ok on a non-admin system.
if IsAdminLoggedOn() then begin
RegQueryStringValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', environmentVariable, value )
end else begin
// Check if the local environment already exists and grab that as a starting place.
if RegValueExists( HKCU, 'Environment', environmentVariable ) then begin
RegQueryStringValue( HKCU, 'Environment', environmentVariable, value )
end else begin
if CompareText( environmentVariable, 'PATH' ) = 0 then begin
RegQueryStringValue( HKCU, 'Environment', environmentVariable, value )
end else begin
RegQueryStringValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', environmentVariable, value )
end;
end;
end;
// Only add the ';' if there is a string already.
if Length( value ) > 0 then begin
newVal := ';' + stringToAdd;
end else begin
newVal := stringToAdd
end;
// Search for the string
idx := Pos( stringToAdd, value );
if idx = 0 then begin
value := value + newVal;
if not RegWriteStringValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', environmentVariable, value ) then
RegWriteStringValue( HKCU, 'Environment', environmentVariable, value );
end;
end;
// -- Updates specified environment variable.
procedure RemoveEnvironmentVariable( const environmentVariable: String; const stringToRemove: String );
var
value: String;
firstVal: String;
secondVal: String;
lastChar: String;
idx: Integer;
begin
// Get the old value so the new value can be appended.
// Also check if you have administrative rights so that we can read
// from the right location. This is because reads are ok on a non-admin system.
if IsAdminLoggedOn() then begin
RegQueryStringValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', environmentVariable, value )
end else begin
// Check if the local environment already exists and grab that as a starting place.
if RegValueExists( HKCU, 'Environment', environmentVariable ) then begin
RegQueryStringValue( HKCU, 'Environment', environmentVariable, value )
end else begin
if CompareText( environmentVariable, 'PATH' ) = 0 then begin
RegQueryStringValue( HKCU, 'Environment', environmentVariable, value )
end else begin
RegQueryStringValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', environmentVariable, value )
end;
end;
end;
// Search for the string
idx := Pos( stringToRemove, value );
if idx > 0 then begin
// get the parts of the string.
firstVal := Copy( value, 0, idx - 1 );
secondVal := Copy( value, idx + Length( stringToRemove ), Length( value ) );
// Combine the first and second values to make the new value.
value := firstVal + secondVal;
// See if the value is now empty and delete it. Else write the balance back.
if Length( value ) = 0 then begin
if not RegDeleteValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', environmentVariable ) then
RegDeleteValue( HKCU, 'Environment', environmentVariable );
end else begin
// Clean up the string a bit by removing duplicate ;.
StringChangeEx( value, ';;', ';', True );
// Check the last character for a ; and remove it.
lastChar := Copy( value, Length( value ), Length( value ) );
if lastChar = ';' then
value := Copy( value, 0, Length( value ) - 1 );
// Write the new value back.
if not RegWriteStringValue( HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', environmentVariable, value ) then
RegWriteStringValue( HKCU, 'Environment', environmentVariable, value );
end;
end;
end;
// -- Previous version and uninstalling functions
function GetPathInstalled( AppID: String ): String;
var
sPrevPath: String;
begin
sPrevPath := '';
if not RegQueryStringValue( HKLM,
'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1',
'Inno Setup: App Path', sPrevpath) then
RegQueryStringValue( HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1' ,
'Inno Setup: App Path', sPrevpath);
Result := sPrevPath;
end;
function GetPathUninstallString( AppID: String ): String;
var
sPrevPath: String;
begin
sPrevPath := '';
if not RegQueryStringValue( HKLM,
'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1',
'UninstallString', sPrevpath) then
RegQueryStringValue( HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1' ,
'UninstallString', sPrevpath);
Result := sPrevPath;
end;
function GetInstalledVersion( AppID: String ): String;
var
sPrevPath: String;
begin
sPrevPath := '';
if not RegQueryStringValue( HKLM,
'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1',
'DisplayVersion', sPrevpath) then
RegQueryStringValue( HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1' ,
'DisplayVersion', sPrevpath);
Result := sPrevPath;
end;
function InitializeSetup(): boolean;
var
ResultCode: Integer;
sVersion: String;
sUninstallEXE: String;
begin
sVersion:= GetInstalledVersion('{#MyAppName}');
sUninstallEXE:= RemoveQuotes(GetPathUninstallString('{#MyAppName}'));
// Check to make sure there is an exceptable version of LfW installed.
if Length(sVersion) = 0 then begin
result:= true;
end else begin
//MsgBox( 'Version ' + sVersion + ' found. Minversion = ' + '{#AppMinVer}', mbInformation, MB_OK );
if CompareText( sVersion, '{#AppMinVer}' ) <= 0 then begin
if FileExists( sUninstallEXE ) then begin
if WizardSilent() then begin
// Just uninstall without asking because we are in silent mode.
Exec( sUninstallEXE, '/SILENT', GetPathInstalled('{#MyAppName}'),
SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
// Make sure that Setup is visible and the foreground window
BringToFrontAndRestore;
result := true;
end else begin
// Ask if they really want to uninstall because we are in the default installer.
if SuppressibleMsgBox( 'Version ' + sVersion + ' of {#MyAppName} was detected.' #13 'It is recommended that you uninstall the old version first before continuing.' + #13 + #13 + 'Would you like to uninstall it now?', mbInformation, MB_YESNO, IDYES ) = IDYES then begin
Exec( sUninstallEXE, '/SILENT', GetPathInstalled('{#MyAppName}'),
SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
// Make sure that Setup is visible and the foreground window
BringToFrontAndRestore;
result := true;
end else begin
result := true;
end;
end;
end;
end else begin
result := true;
end;
end;
end;
procedure CurStepChanged( CurStep: TSetupStep );
begin
if CurStep = ssPostInstall then begin
// Add the app path to the PATH environment variable.
UpdateEnvironmentVariable( 'PATH', ExpandConstant( '{app}' ) );
UpdateEnvironmentVariable( 'PATH', ExpandConstant( '{app}' ) + '\clibs' );
// Add the file extentions to the PATHEXT environment variable.
//UpdateEnvironmentVariable( 'PATHEXT', '.lua' );
UpdateEnvironmentVariable( 'PATHEXT', '.wlua' );
UpdateEnvironmentVariable( 'PATHEXT', '.lexe' );
// Add the LUA_PATH and LUA_CPATH.
UpdateEnvironmentVariable( 'LUA_PATH', ';;' + ExpandConstant( '{app}' ) + '\lua\?.luac' )
//UpdateEnvironmentVariable( 'LUA_CPATH', ';;?.dll;' + ExpandConstant( '{app}' ) + '\clibs\?.dll;' + ExpandConstant( '{app}' ) + '\clibs\loadall.dll;' + ExpandConstant( '{app}' ) + '\clibs\?51.dll' )
// Add LUA_DEV to help C module writers.
UpdateEnvironmentVariable( 'LUA_DEV', ExpandConstant( '{app}' ) )
end;
end;
procedure CurUninstallStepChanged( CurUninstallStep: TUninstallStep );
begin
if CurUninstallStep = usPostUninstall then begin
// Remove the app path to the PATH environment variable.
RemoveEnvironmentVariable( 'PATH', ExpandConstant( '{app}' ) );
RemoveEnvironmentVariable( 'PATH', ExpandConstant( '{app}' ) + '\clibs' );
// Remove the file extentions to the PATHEXT environment variable.
//RemoveEnvironmentVariable( 'PATHEXT', '.lua' );
RemoveEnvironmentVariable( 'PATHEXT', '.wlua' );
RemoveEnvironmentVariable( 'PATHEXT', '.lexe' );
// Remove the LUA_PATH and LUA_CPATH.
RemoveEnvironmentVariable( 'LUA_PATH', ';;' + ExpandConstant( '{app}' ) + '\lua\?.luac' )
//RemoveEnvironmentVariable( 'LUA_CPATH', ';;?.dll;' + ExpandConstant( '{app}' ) + '\clibs\?.dll;' + ExpandConstant( '{app}' ) + '\clibs\loadall.dll;' + ExpandConstant( '{app}' ) + '\clibs\?51.dll' )
// Remove the LUA_DEV variable.
RemoveEnvironmentVariable( 'LUA_DEV', ExpandConstant( '{app}' ) )
end;
end;
#ifdef DOWNLOAD_FILES
procedure isxdl_AddFile(URL, Filename: String);
external 'isxdl_AddFile@files:isxdl.dll stdcall';
function isxdl_DownloadFiles(hWnd: Integer): Integer;
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
function isxdl_SetOption(Option, Value: String): Integer;
external 'isxdl_SetOption@files:isxdl.dll stdcall';
function NextButtonClick( CurPage: Integer ): Boolean;
var
hWnd: Integer;
downloadNeeded: Boolean;
vcRedistPath: String;
begin
downloadNeeded := false;
Result := true;
if CurPage = wpReady then begin
hWnd := StrToInt( ExpandConstant( '{wizardhwnd}' ) );
if not IsVc8RuntimeInstalled() then begin
vcRedistPath := ExpandConstant( '{src}\vcredist_x86.exe' );
if not FileExists( vcRedistPath ) then begin
isxdl_AddFile( '{#vcRedistURL}', vcRedistPath );
downloadNeeded := true;
end;
isxdl_SetOption( 'label', 'Downloading extra files' );
isxdl_SetOption( 'description', 'Please wait while Setup is downloading the Microsoft Visual C++ 2005 SP1 Redistributable to your computer.' );
if downloadNeeded then begin
if isxdl_DownloadFiles( hWnd ) = 0 then begin
Result := false;
end;
end;
end;
end;
end;
#endif