Переглянути джерело

Merge branch 'master' into safeloadsystemdlls

Martijn Laan 9 роки тому
батько
коміт
c15d2ed842
100 змінених файлів з 492 додано та 778 видалено
  1. 2 2
      CONTRIBUTING.md
  2. 3 3
      Components/FolderTreeView.pas
  3. BIN
      Examples/MyDll.dll
  4. 0 0
      Examples/MyDll/C#/MyDll.cs
  5. 3 3
      Examples/MyDll/C#/MyDll.csproj
  6. 1 1
      Examples/MyDll/C#/MyDll.sln
  7. 2 2
      Examples/MyDll/C#/Properties/AssemblyInfo.cs
  8. 0 0
      Examples/MyDll/C#/packages.config
  9. 0 0
      Examples/MyDll/C/MyDll.c
  10. 0 0
      Examples/MyDll/C/MyDll.def
  11. 0 0
      Examples/MyDll/C/MyDll.dsp
  12. 0 0
      Examples/MyProg.chm
  13. 0 0
      Examples/MyProg.exe
  14. BIN
      Examples/Mydll.dll
  15. 13 4
      Files/ISPPBuiltins.iss
  16. 99 98
      Files/Languages/Armenian.islu
  17. 147 144
      Files/Languages/Polish.isl
  18. 3 3
      Files/Languages/Unofficial/Farsi.isl
  19. 0 0
      ISHelp/.gitignore
  20. 0 0
      ISHelp/ISHelpGen/.gitignore
  21. 0 0
      ISHelp/ISHelpGen/ISHelpGen.dpr
  22. 0 0
      ISHelp/ISHelpGen/ISHelpGen.exe
  23. 0 0
      ISHelp/ISHelpGen/UIsxclassesParser.pas
  24. 0 0
      ISHelp/ISHelpGen/XMLParse.pas
  25. 0 0
      ISHelp/Staging/.gitignore
  26. 0 0
      ISHelp/Staging/contents-template.htm
  27. 0 0
      ISHelp/Staging/contents.css
  28. 0 0
      ISHelp/Staging/contents.js
  29. 0 0
      ISHelp/Staging/hh_isppredirect.xhtm
  30. 0 0
      ISHelp/Staging/hh_project.hhp
  31. 0 0
      ISHelp/Staging/images/contentsheadclosed.gif
  32. 0 0
      ISHelp/Staging/images/contentsheadopen.gif
  33. 0 0
      ISHelp/Staging/images/contentstopic.gif
  34. 0 0
      ISHelp/Staging/images/extlink.gif
  35. 0 0
      ISHelp/Staging/index.htm
  36. 0 0
      ISHelp/Staging/index.php
  37. 0 0
      ISHelp/Staging/stoplist.stp
  38. 0 0
      ISHelp/Staging/styles.css
  39. 0 0
      ISHelp/Staging/topic.js
  40. 0 0
      ISHelp/compile.bat
  41. 0 0
      ISHelp/isetup.dtd
  42. 42 28
      ISHelp/isetup.xml
  43. 0 0
      ISHelp/isfaq.htm
  44. 1 1
      ISHelp/isx.xml
  45. 0 0
      ISHelp/isxclasses.footer
  46. 0 0
      ISHelp/isxclasses.header
  47. 0 0
      ISHelp/isxclasses.header2
  48. 0 0
      ISHelp/isxclasses.pas
  49. 0 0
      ISHelp/isxfunc.xml
  50. 0 0
      ISHelp/isxfunc.xsl
  51. 10 10
      Projects/CompForm.pas
  52. BIN
      Projects/Compil32.res
  53. 101 86
      Projects/Compile.pas
  54. 0 0
      Projects/ISCC.dof
  55. 37 25
      Projects/ISCC.dpr
  56. BIN
      Projects/ISCC.res
  57. 0 0
      Projects/ISCmplr.dof
  58. BIN
      Projects/ISCmplr.res
  59. 13 1
      Projects/ISPP/Help/ispp.xml
  60. BIN
      Projects/ISPP/ISPP.res
  61. 0 352
      Projects/ISPP/ISPPBuiltins.iss
  62. 12 12
      Projects/ISPP/IsppFuncs.pas
  63. 0 0
      Projects/Lzma2/C/Alloc.c
  64. 0 0
      Projects/Lzma2/C/Alloc.h
  65. 0 0
      Projects/Lzma2/C/LzFind.c
  66. 0 0
      Projects/Lzma2/C/LzFind.h
  67. 0 0
      Projects/Lzma2/C/LzFindMt.c
  68. 0 0
      Projects/Lzma2/C/LzFindMt.h
  69. 0 0
      Projects/Lzma2/C/LzHash.h
  70. 0 0
      Projects/Lzma2/C/Lzma2Dec.c
  71. 0 0
      Projects/Lzma2/C/Lzma2Dec.h
  72. 0 0
      Projects/Lzma2/C/Lzma2Enc.c
  73. 0 0
      Projects/Lzma2/C/Lzma2Enc.h
  74. 0 0
      Projects/Lzma2/C/LzmaDec.c
  75. 0 0
      Projects/Lzma2/C/LzmaDec.h
  76. 0 0
      Projects/Lzma2/C/LzmaEnc.c
  77. 0 0
      Projects/Lzma2/C/LzmaEnc.h
  78. 0 0
      Projects/Lzma2/C/MtCoder.c
  79. 0 0
      Projects/Lzma2/C/MtCoder.h
  80. 0 0
      Projects/Lzma2/C/Threads.c
  81. 0 0
      Projects/Lzma2/C/Threads.h
  82. 0 0
      Projects/Lzma2/C/Types.h
  83. 0 0
      Projects/Lzma2/Decoder/ISLzma2Dec.c
  84. 0 0
      Projects/Lzma2/Decoder/ISLzma2Dec.obj
  85. 0 0
      Projects/Lzma2/Decoder/ISLzmaDec.c
  86. 0 0
      Projects/Lzma2/Decoder/ISLzmaDec.obj
  87. 0 0
      Projects/Lzma2/Decoder/compiling.txt
  88. 0 0
      Projects/Lzma2/Encoder/islzma.c
  89. 0 0
      Projects/Lzma2/Encoder/islzma.def
  90. 0 0
      Projects/Lzma2/Encoder/islzma.h
  91. 0 0
      Projects/Lzma2/Encoder/islzma.sln
  92. 0 0
      Projects/Lzma2/Encoder/islzma.vcproj
  93. 0 0
      Projects/Lzma2/Encoder/islzma_dll.c
  94. 0 0
      Projects/Lzma2/Encoder/islzma_exe.c
  95. 0 0
      Projects/Lzma2/Encoder/islzma_exe.vcproj
  96. 0 0
      Projects/MD5.pas
  97. 3 3
      Projects/Main.pas
  98. 0 0
      Projects/MsgIDs.pas
  99. 0 0
      Projects/RegDLL.pas
  100. 0 0
      Projects/RegSvr.pas

+ 2 - 2
CONTRIBUTING.md

@@ -1,8 +1,8 @@
 Inno Setup
 ==========
 
-Copyright (C) 1997-2015 Jordan Russell. All rights reserved.  
-Portions Copyright (C) 2000-2015 Martijn Laan. All rights reserved.  
+Copyright (C) 1997-2016 Jordan Russell. All rights reserved.  
+Portions Copyright (C) 2000-2016 Martijn Laan. All rights reserved.  
 For conditions of distribution and use, see LICENSE.TXT.
 
 Contributing issues

+ 3 - 3
Components/FolderTreeView.pas

@@ -672,7 +672,7 @@ begin
             TVItem.hItem := DispItem.hItem;
             TVItem.pszText := PChar(S);
             TreeView_SetItem(Handle, TVItem);
-            TreeView_SortChildren(Handle, TreeView_GetParent(Handle, DispItem.hItem), {$IFDEF IS_DXE}False{$ELSE}0{$ENDIF});
+            TreeView_SortChildren(Handle, TreeView_GetParent(Handle, DispItem.hItem), {$IFDEF IS_DXE2}False{$ELSE}0{$ENDIF});
             Change;
           end;
         end;
@@ -1029,7 +1029,7 @@ begin
     if Result then begin
       { When a text callback is used, sorting after all items are inserted is
         exponentially faster than using hInsertAfter=TVI_SORT }
-      TreeView_SortChildren(Handle, Item, {$IFDEF IS_DXE}False{$ELSE}0{$ENDIF});
+      TreeView_SortChildren(Handle, Item, {$IFDEF IS_DXE2}False{$ELSE}0{$ENDIF});
     end;
   end;
 end;
@@ -1167,7 +1167,7 @@ begin
       AddSubfolders(Item, AddBackslash(FCommonPrograms) + Path, FCommonStartup);
     if FUserPrograms <> '' then
       AddSubfolders(Item, AddBackslash(FUserPrograms) + Path, FUserStartup);
-    TreeView_SortChildren(Handle, Item, {$IFDEF IS_DXE}False{$ELSE}0{$ENDIF});
+    TreeView_SortChildren(Handle, Item, {$IFDEF IS_DXE2}False{$ELSE}0{$ENDIF});
   end;
 end;
 

BIN
Examples/MyDll.dll


+ 0 - 0
Examples/Mydll/C#/Mydll.cs → Examples/MyDll/C#/MyDll.cs


+ 3 - 3
Examples/Mydll/C#/Mydll.csproj → Examples/MyDll/C#/MyDll.csproj

@@ -7,8 +7,8 @@
     <ProjectGuid>{79237A5C-6C62-400A-BBDD-3DA1CA327973}</ProjectGuid>
     <OutputType>Library</OutputType>
     <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Mydll</RootNamespace>
-    <AssemblyName>Mydll</AssemblyName>
+    <RootNamespace>MyDll</RootNamespace>
+    <AssemblyName>MyDll</AssemblyName>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
   </PropertyGroup>
@@ -45,7 +45,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Mydll.cs" />
+    <Compile Include="MyDll.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>

+ 1 - 1
Examples/Mydll/C#/Mydll.sln → Examples/MyDll/C#/MyDll.sln

@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2013
 VisualStudioVersion = 12.0.40629.0
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mydll", "Mydll.csproj", "{79237A5C-6C62-400A-BBDD-3DA1CA327973}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyDll", "MyDll.csproj", "{79237A5C-6C62-400A-BBDD-3DA1CA327973}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

+ 2 - 2
Examples/Mydll/C#/Properties/AssemblyInfo.cs → Examples/MyDll/C#/Properties/AssemblyInfo.cs

@@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
 // General Information about an assembly is controlled through the following 
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
-[assembly: AssemblyTitle("Mydll")]
+[assembly: AssemblyTitle("MyDll")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Mydll")]
+[assembly: AssemblyProduct("MyDll")]
 [assembly: AssemblyCopyright("Copyright ©  2015")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]

+ 0 - 0
Examples/Mydll/C#/packages.config → Examples/MyDll/C#/packages.config


+ 0 - 0
Examples/MyDll/C/Mydll.c → Examples/MyDll/C/MyDll.c


+ 0 - 0
Examples/MyDll/C/Mydll.def → Examples/MyDll/C/MyDll.def


+ 0 - 0
Examples/MyDll/C/Mydll.dsp → Examples/MyDll/C/MyDll.dsp


+ 0 - 0
Examples/Myprog.chm → Examples/MyProg.chm


+ 0 - 0
Examples/Myprog.exe → Examples/MyProg.exe


BIN
Examples/Mydll.dll


+ 13 - 4
Files/ISPPBuiltins.iss

@@ -84,10 +84,10 @@
 //
 // ReadReg constants
 //
-#define HKEY_CLASSES_ROOT       0x80000000UL
-#define HKEY_CURRENT_USER       0x80000001UL
-#define HKEY_LOCAL_MACHINE      0x80000002UL
-#define HKEY_USERS              0x80000003UL
+#define HKEY_CLASSES_ROOT  0x80000000UL
+#define HKEY_CURRENT_USER  0x80000001UL
+#define HKEY_LOCAL_MACHINE 0x80000002UL
+#define HKEY_USERS         0x80000003UL
 #define HKEY_CURRENT_CONFIG     0x80000005UL
 #define HKEY_CLASSES_ROOT_64    0x82000000UL
 #define HKEY_CURRENT_USER_64    0x82000001UL
@@ -285,6 +285,15 @@
     FileName + "." + NewExt : \
     Copy(FileName, 1, Local[0]) + NewExt
 //
+// RemoveFileExt
+//
+// Removes extension in FileName.
+//
+#define RemoveFileExt(str FileName) \
+  !(Local[0] = RPos(".", FileName)) ? \
+  FileName : \
+  Copy(FileName, 1, Local[0] - 1)
+//
 // AddBackslash
 //
 // Adds a backslash to the string, if it's not already there.

+ 99 - 98
Files/Languages/Unofficial/Armenian.islu → Files/Languages/Armenian.islu

@@ -3,10 +3,10 @@
 ; Armenian translation by Hrant Ohanyan
 ; E-mail: [email protected]
 ; Translation home page: http://www.haysoft.org
-; Last modification date: 2015-10-19
+; Last modification date: 2016-01-28
 ;
 [LangOptions]
-LanguageName=Armenian
+LanguageName=Հայերեն
 LanguageID=$042B
 LanguageCodePage=0
 ; If the language you are translating to requires special font faces or
@@ -23,10 +23,10 @@ LanguageCodePage=0
 [Messages]
 
 ; *** Application titles
-SetupAppTitle=Տեղակայում
-SetupWindowTitle=%1-ի տեղակայում
-UninstallAppTitle=Ջնջում
-UninstallAppFullTitle=%1-ի ջնջում
+SetupAppTitle=Տեղադրում
+SetupWindowTitle=%1-ի տեղադրում
+UninstallAppTitle=Ապատեղադրում
+UninstallAppFullTitle=%1-ի ապատեղադրում
 
 ; *** Misc. common
 InformationTitle=Տեղեկություն
@@ -35,28 +35,28 @@ ErrorTitle=Սխալ
 
 ; *** SetupLdr messages
 SetupLdrStartupMessage=Այս ծրագիրը կտեղադրի %1-ը Ձեր համակարգչում։ Շարունակե՞լ։
-LdrCannotCreateTemp=Հնարավոր չէ ստեղծել ժամանակավոր ֆայլ։ Տեղակայումը կասեցված է
-LdrCannotExecTemp=Հնարավոր չէ կատարել ֆայլը ժամանակավոր թղթապանակից։ Տեղակայումը կասեցված է
+LdrCannotCreateTemp=Հնարավոր չէ ստեղծել ժամանակավոր ֆայլ։ Տեղադրումը կասեցված է
+LdrCannotExecTemp=Հնարավոր չէ կատարել ֆայլը ժամանակավոր թղթապանակից։ Տեղադրումը կասեցված է
 
 ; *** Startup error messages
 LastErrorMessage=%1.%n%nՍխալ %2: %3
 SetupFileMissing=%1 ֆայլը բացակայում է տեղադրման թղթապանակից։ Ուղղեք խնդիրը կամ ստացեք ծրագրի նոր տարբերակը։
-SetupFileCorrupt=Տեղակայման ֆայլերը վնասված են։
-SetupFileCorruptOrWrongVer=Տեղակայման ֆայլերը վնասված են կամ անհամատեղելի են տեղակայիչի այս տարբերակի հետ։ Ուղղեք խնդիրը կամ ստացեք ծրագրի նոր տարբերակը։
+SetupFileCorrupt=Տեղադրվող ֆայլերը վնասված են։
+SetupFileCorruptOrWrongVer=Տեղադրվող ֆայլերը վնասված են կամ անհամատեղելի են տեղակայիչի այս տարբերակի հետ։ Ուղղեք խնդիրը կամ ստացեք ծրագրի նոր տարբերակը։
 InvalidParameter=Հրամանատողում նշված է սխալ հրաման.%n%n%1
 SetupAlreadyRunning=Տեղակայիչը արդեն աշխատում է։
 WindowsVersionNotSupported=Ծրագիրը չի աջակցում այս համակարգչում աշխատող Windows-ի տարբերակը։
 WindowsServicePackRequired=Ծրագիրը պահանջում է %1-ի Service Pack %2 կամ ավելի նոր։
 NotOnThisPlatform=Այս ծրագիրը չի աշխատի %1-ում։
 OnlyOnThisPlatform=Այս ծրագիրը հնարավոր է բացել միայն %1-ում։
-OnlyOnTheseArchitectures=Այս ծրագրի տեղակյաումը հնարավոր է միայն Windows-ի մշակիչի հետևյալ կառուցվածքներում՝ %n%n%1
-MissingWOW64APIs=Windows-ի Ձեր տարբերակում բացակայում է 64 բիթանոց տեղակայման համար պահանջվող ֆունկցիաները։ Դրա համար Դուք պետք է տեղակայեք թարմացումների հետևյալ փաթեթը (Service Pack)՝ %1։
-WinVersionTooLowError=Այս ծրագիրը պահանջում է %1-ի տարբերակ %2 կամ ավելի նոր։
-WinVersionTooHighError=Ծրագիրը չի կարող տեղակայվել %1-ի տարբերակ %2 կամ ավելի նորում
-AdminPrivilegesRequired=Ծրագիրը տեղակայելու համար պահանջվում են Ադմինի իրավունքներ։
-PowerUserPrivilegesRequired=Ծրագիրը տեղակայելու համար պետք է մուտք գործել համակարգ որպես Ադմին կամ «Փորձառու օգտագործող» (Power Users).
-SetupAppRunningError=Տեղակայիչը հայտնաբերել է, որ %1-ը աշխատում է։%n%nՓակեք այն և սեղմեք «ԼԱՎ»՝ շարունակելու համար կամ «Չեղարկել»՝ փակելու համար։
-UninstallAppRunningError=Ջնջող ծրագիրը հայտնաբերել է, որ %1-ը աշխատում է։%n%nՓակեք այն և սեղմեք «ԼԱՎ»՝ շարունակելու համար կամ «Չեղարկել»՝ փակելու համար։
+OnlyOnTheseArchitectures=Այս ծրագրի տեղադրումը հնարավոր է միայն Windows-ի մշակիչի հետևյալ կառուցվածքներում՝ %n%n%1
+MissingWOW64APIs=Windows-ի Ձեր տարբերակում բացակայում է 64 բիթանոց տեղակայման համար պահանջվող գործառույթները։ Դրա համար պետք է տեղադրեք թարմացումների հետևյալ փաթեթը (Service Pack)՝ %1։
+WinVersionTooLowError=Այս ծրագիրը պահանջում է %1-ի տարբերակ %2 կամ ավելի նորը։
+WinVersionTooHighError=Ծրագիրը չի կարող տեղադրվել %1-ի տարբերակ %2 կամ ավելի նորում
+AdminPrivilegesRequired=Ծրագիրը տեղադրելու համար պահանջվում են Ադմինի իրավունքներ։
+PowerUserPrivilegesRequired=Ծրագիրը տեղադրելու համար պետք է մուտք գործել համակարգ որպես Ադմին կամ «Փորձառու օգտագործող» (Power Users):
+SetupAppRunningError=Տեղակայիչը հայտնաբերել է, որ %1-ը աշխատում է։%n%nՓակեք այն և սեղմեք «Լավ»՝ շարունակելու համար կամ «Չեղարկել»՝ փակելու համար։
+UninstallAppRunningError=Ապատեղադրող ծրագիրը հայտնաբերել է, որ %1-ը աշխատում է։%n%nՓակեք այն և սեղմեք «Լավ»՝ շարունակելու համար կամ «Չեղարկել»՝ փակելու համար։
 
 ; *** Misc. errors
 ErrorCreatingDir=Հնարավոր չէ ստեղծել "%1" թղթապանակը
@@ -64,18 +64,18 @@ ErrorTooManyFilesInDir=Հնարավոր չէ ստեղծել ֆայլ "%1" թղթ
 
 ; *** Setup common messages
 ExitSetupTitle=Տեղակայման ընդհատում
-ExitSetupMessage=Տեղակայումը չի ավարատվել։ Եթե ընդհատեք, ապա ծրագիրը չի տեղակայվի։%n%nԱվարտե՞լ։
+ExitSetupMessage=Տեղակայումը չի ավարատվել։ Եթե ընդհատեք, ապա ծրագիրը չի տեղադրվի։%n%nԱվարտե՞լ։
 AboutSetupMenuItem=&Ծրագրի մասին...
 AboutSetupTitle=Ծրագրի մասին
-AboutSetupMessage=%1, տարբերակ՝ %2%n%3%n%nՎեբ կայքը %1:%n%4
+AboutSetupMessage=%1, տարբերակ՝ %2%n%3%n%nՎեբ կայք՝ %1:%n%4
 AboutSetupNote=
 TranslatorNote=Armenian translation by Hrant Ohanyan »»» http://www.haysoft.org
 
 ; *** Buttons
-ButtonBack=« &Նախորդ
-ButtonNext=&Հաջորդ »
+ButtonBack=« &Նախորդը
+ButtonNext=&Հաջորդը »
 ButtonInstall=&Տեղադրել
-ButtonOK=ԼԱՎ
+ButtonOK=Լավ
 ButtonCancel=Չեղարկել
 ButtonYes=&Այո
 ButtonYesToAll=Այո բոլորի &համար
@@ -88,59 +88,59 @@ ButtonNewFolder=&Ստեղծել թղթապանակ
 
 ; *** "Select Language" dialog messages
 SelectLanguageTitle=Ընտրել տեղակայիչի լեզուն
-SelectLanguageLabel=Ընտրեք այն լեզուն, որը օգտագործվելու է տեղակայման ընթացքում.
+SelectLanguageLabel=Ընտրեք այն լեզուն, որը օգտագործվելու է տեղադրման ընթացքում.
 
 ; *** Common wizard text
-ClickNext=Սեղմեք «Հաջորդ»՝ շարունակելու համար կամ «Չեղարկել»՝ տեղակայիչը փակելու համար։
+ClickNext=Սեղմեք «Հաջորդը»՝ շարունակելու համար կամ «Չեղարկել»՝ տեղակայիչը փակելու համար։
 BeveledLabel=
 BrowseDialogTitle=Ընտրել թղթապանակ
-BrowseDialogLabel=Ընտրեք թղթապանակը ցանկից և սեղմեք «ԼԱՎ»։
+BrowseDialogLabel=Ընտրեք թղթապանակը ցանկից և սեղմեք «Լավ»։
 NewFolderName=Նոր թղթապանակ
 
 ; *** "Welcome" wizard page
 WelcomeLabel1=Ձեզ ողջունում է [name]-ի տեղակայման օգնականը
-WelcomeLabel2=Ծրագիրը կտեղակայի [name/ver]-ը Ձեր համակարգչում։%n%nՇարունակելուց առաջ խորհուրդ ենք տալիս փակել բոլոր աշխատող ծրագրերը։ 
+WelcomeLabel2=Ծրագիրը կտեղադրի [name/ver]-ը Ձեր համակարգչում։%n%nՇարունակելուց առաջ խորհուրդ ենք տալիս փակել բոլոր աշխատող ծրագրերը։ 
 
 ; *** "Password" wizard page
 WizardPassword=Գաղտնաբառ
 PasswordLabel1=Ծրագիրը պաշտպանված է գաղտնաբառով։
-PasswordLabel3=Մուտքագրեք գաղտնաբառը և սեղմեք «Հաջորդ»։
+PasswordLabel3=Մուտքագրեք գաղտնաբառը և սեղմեք «Հաջորդը»։
 PasswordEditLabel=&Գաղտնաբառը.
 IncorrectPassword=Մուտքագրված գաղտնաբառը սխալ է, կրկին փորձեք։
 
 ; *** "License Agreement" wizard page
-WizardLicense=Արտոնագրային համաձայնություն
+WizardLicense=Արտոնագրային համաձայնագիր
 LicenseLabel=Խնդրում ենք շարունակելուց առաջ կարդալ հետևյալ տեղեկությունը։
-LicenseLabel3=Կարդացեք արտոնագրային համաձայնությունը։ Շարունակելուց առաջ Դուք պետք է ընդունեք նշված պայմանները։
-LicenseAccepted=&Ընդունում եմ արտոնագրային համաձայնությունը
-LicenseNotAccepted=&Չեմ ընդունում արտոնագրային համաձայնությունը
+LicenseLabel3=Կարդացեք արտոնագրային համաձայնագիրը։ Շարունակելուց առաջ պետք է ընդունեք նշված պայմանները։
+LicenseAccepted=&Ընդունում եմ արտոնագրային համաձայնագիրը
+LicenseNotAccepted=&Չեմ ընդունում արտոնագրային համաձայնագիրը
 
 ; *** "Information" wizard pages
 WizardInfoBefore=Տեղեկություն
 InfoBeforeLabel=Շարունակելուց առաջ կարդացեք այս տեղեկությունը։
-InfoBeforeClickLabel=Եթե պատրաստ եք սեղմեք «Հաջորդ»։
+InfoBeforeClickLabel=Եթե պատրաստ եք սեղմեք «Հաջորդը»։
 WizardInfoAfter=Տեղեկություն
 InfoAfterLabel=Շարունակելուց առաջ կարդացեք այս տեղեկությունը։
-InfoAfterClickLabel=Երբ պատրաստ լինեք շարունակելու՝ սեղմեք «Հաջորդ»։
+InfoAfterClickLabel=Երբ պատրաստ լինեք շարունակելու՝ սեղմեք «Հաջորդը»։
 
 ; *** "User Information" wizard page
 WizardUserInfo=Տեղեկություն օգտվողի մասին
 UserInfoDesc=Գրեք տվյալներ Ձեր մասին
-UserInfoName=&Օօգտվողի անուն և ազգանուն.
+UserInfoName=&Օգտվողի անուն և ազգանուն.
 UserInfoOrg=&Կազմակերպություն.
 UserInfoSerial=&Հերթական համար.
 UserInfoNameRequired=Պետք է գրեք Ձեր անունը։
 
 ; *** "Select Destination Location" wizard page
-WizardSelectDir=Ընտրեք տեղակայման թղթապանակը
+WizardSelectDir=Ընտրել տեղակայման թղթապանակը
 SelectDirDesc=Ո՞ր թղթապանակում տեղադրել [name]-ը։
 SelectDirLabel3=Ծրագիրը կտեղադրի [name]-ը հետևյալ թղթապանակում։
-SelectDirBrowseLabel=Սեղմեք «Հաջորդ»՝ շարունակելու համար։ Եթե ցանկանում եք ընտրել այլ թղթապանակ՝ սեղմեք «Ընտրել»։
+SelectDirBrowseLabel=Սեղմեք «Հաջորդը»՝ շարունակելու համար։ Եթե ցանկանում եք ընտրել այլ թղթապանակ՝ սեղմեք «Ընտրել»։
 DiskSpaceMBLabel=Պահանջվում է առնվազն [mb] ՄԲ ազատ տեղ։
-CannotInstallToNetworkDrive=Հնարավոր չէ տեղադրել Ցանցային սկավառակում։
+CannotInstallToNetworkDrive=Հնարավոր չէ տեղադրել Ցանցային հիշասարքում։
 CannotInstallToUNCPath=Հնարավոր չէ տեղադրել UNC ուղիում։
-InvalidPath=Պետք է նշեք ամբողջական ուղին՝ սկավառակի տառով, օրինակ՝%n%nC:\APP%n%nկամ UNC ուղի՝ %n%n\\սպասարկիչի_անունը\ռեսուրսի_անունը
-InvalidDrive=Ընտրված սկավառակը կամ ցանցային ուղին գոյություն չունեն կամ անհասանելի են։ Ընտրեք այլ ուղի։
+InvalidPath=Պետք է նշեք ամբողջական ուղին՝ հիշասարքի տառով, օրինակ՝%n%nC:\APP%n%nկամ UNC ուղի՝ %n%n\\սպասարկիչի_անունը\ռեսուրսի_անունը
+InvalidDrive=Ընտրված հիշասարքը կամ ցանցային ուղին գոյություն չունեն կամ անհասանելի են։ Ընտրեք այլ ուղի։
 DiskSpaceWarningTitle=Չկա պահանջվող չափով ազատ տեղ
 DiskSpaceWarning=Պահանջվում է առնվազն %1 ԿԲ ազատ տեղ, մինչդեռ հասանելի է ընդամենը %2 ԿԲ։%n%nԱյնուհանդերձ, շարունակե՞լ։
 DirNameTooLong=Թղթապանակի անունը կամ ուղին երկար են:
@@ -154,7 +154,7 @@ DirDoesntExist=%n%n%1%n%n թղթապանակը գոյություն չունի։
 ; *** "Select Components" wizard page
 WizardSelectComponents=Ընտրել բաղադրիչներ
 SelectComponentsDesc=Ո՞ր ֆայլերը պետք է տեղադրվեն։
-SelectComponentsLabel2=Ընտրեք այն ֆայլերը, որոնք պետք է տեղադրվեն, հանեք ընտրության նշանը այն ֆայլերից, որոնք չպետք է տեղադրվեն։ Սեղմեք «Հաջորդ»՝ շարունակելու համար։
+SelectComponentsLabel2=Նշեք այն ֆայլերը, որոնք պետք է տեղադրվեն, հապանշեք այն ֆայլերը, որոնք չպետք է տեղադրվեն։ Սեղմեք «Հաջորդը»՝ շարունակելու համար։
 FullInstallation=Լրիվ տեղադրում
 ; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
 CompactInstallation=Սեղմված տեղադրում
@@ -163,45 +163,46 @@ NoUninstallWarningTitle=Տեղակայվող ֆայլերը
 NoUninstallWarning=Տեղակայիչ ծրագիրը հայտնաբերել է, որ հետևյալ բաղադրիչները արդեն տեղադրված են Ձեր համակարգչում։ %n%n%1%n%nԱյս բաղադրիչների ընտրության վերակայումը չի ջնջի դրանք։%n%nՇարունակե՞լ։
 ComponentSize1=%1 ԿԲ
 ComponentSize2=%1 ՄԲ
-ComponentsDiskSpaceMBLabel=Տվյալ ընտրությունը պահանջում է ամենաքիչը [mb] ՄԲ տեղ սկավառակում:
+ComponentsDiskSpaceMBLabel=Տվյալ ընտրությունը պահանջում է ամենաքիչը [mb] ՄԲ տեղ հիշասարքում:
 
 ; *** "Select Additional Tasks" wizard page
 WizardSelectTasks=Լրացուցիչ առաջադրանքներ
 SelectTasksDesc=Ի՞նչ լրացուցիչ առաջադրանքներ պետք է կատարվեն։
-SelectTasksLabel2=Ընտրեք լրացուցիչ առաջադրանքներ, որոնք պետք է կատարվեն [name]-ի տեղակայման ընթացքում, ապա սեղմեք «Հաջորդ».
+SelectTasksLabel2=Ընտրեք լրացուցիչ առաջադրանքներ, որոնք պետք է կատարվեն [name]-ի տեղադրման ընթացքում, ապա սեղմեք «Հաջորդը».
 
 ; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Ընտրել «Start» ընտրացանկի թղթապանակը
+WizardSelectProgramGroup=Ընտրել «Start» ցանկի թղթապանակը
 SelectStartMenuFolderDesc=Որտե՞ղ ստեղծել դյուրանցումներ.
-SelectStartMenuFolderLabel3=Ծրագիրը կստեղծի դյուրանցումներ «Start» ընտրացանկի հետևյալ թղթապանակում։
-SelectStartMenuFolderBrowseLabel=Սեղմեք «Հաջորդ»՝ շարունակելու համար։ Եթե ցանկանում եք ընտրեք այլ թղթապանակ՝ սեղմեք «Ընտրել»։
+SelectStartMenuFolderLabel3=Ծրագիրը կստեղծի դյուրանցումներ «Start» ցանկի հետևյալ թղթապանակում։
+SelectStartMenuFolderBrowseLabel=Սեղմեք «Հաջորդը»՝ շարունակելու համար։ Եթե ցանկանում եք ընտրեք այլ թղթապանակ՝ սեղմեք «Ընտրել»։
 MustEnterGroupName=Պետք է գրեք թղթապանակի անունը։
 GroupNameTooLong=Թղթապանակի անունը կամ ուղին շատ երկար են։
 InvalidGroupName=Նշված անունը անընդունելի է։
 BadGroupName=Անվան մեջ չպետք է լինեն հետևյալ գրանշանները՝ %n%n%1
-NoProgramGroupCheck2=&Չստեղծել թղթապանակ «Start» ընտրացանկում
+NoProgramGroupCheck2=&Չստեղծել թղթապանակ «Start» ցանկում
 
 ; *** "Ready to Install" wizard page
-WizardReady=Պատրաստ է տեղադրելուն
+WizardReady=Պատրաստ է
 ReadyLabel1=Տեղակայիչը պատրաստ է սկսել [name]-ի տեղադրումը։
-ReadyLabel2a=Սեղմեք «Տեղադրել»՝ շարունակելու համար կամ «Նախորդ»՝ եթե ցանկանում եք դիտել կամ փոփոխել տեղադրելու կարգավորումները։
+ReadyLabel2a=Սեղմեք «Տեղադրել»՝ շարունակելու համար կամ «Նախորդը»՝ եթե ցանկանում եք դիտել կամ փոփոխել տեղադրելու կարգավորումները։
 ReadyLabel2b=Սեղմեք «Տեղադրել»՝ շարունակելու համար։
-ReadyMemoUserInfo=Տեղեկություն օգվողի մասին.
+ReadyMemoUserInfo=Տեղեկություն օգտվողի մասին.
 ReadyMemoDir=Տեղադրելու թղթապանակ.
 ReadyMemoType=Տեղադրման ձև.
-ReadyMemoComponents=Ընտրել բաղադրիչներ.
-ReadyMemoGroup=Թղթապանակ «Start» ընտրացանկում.
+ReadyMemoComponents=Ընտրված բաղադրիչներ.
+ReadyMemoGroup=Թղթապանակ «Start» ցանկում.
 ReadyMemoTasks=Լրացուցիչ առաջադրանքներ.
 
 ; *** "Preparing to Install" wizard page
 WizardPreparing=Նախատրաստում է տեղադրումը
-PreparingDesc=Տեղակայիչը նախպատրաստվում է տեղադրել [name]-ը ձեր համակարգչում։
-PreviousInstallNotCompleted=Այլ ծրագրի տեղադրումը կամ ջնջումը չի ավարտվել։ Այն ավարտելու համար պետք է վերագործարկեք համակարգիչը։%n%nՎերագործարկելուց հետո կրկին բացեք տեղակայման փաթեթը՝ [name]-ի տեղադրումը ավարտելու համար։
+PreparingDesc=Տեղակայիչը պատրաստվում է տեղադրել [name]-ը ձեր համակարգչում։
+PreviousInstallNotCompleted=Այլ ծրագրի տեղադրումը կամ ապատեղադրումը չի ավարտվել։ Այն ավարտելու համար պետք է վերամեկնարկեք համակարգիչը։%n%nՎերամեկնարկելուց հետո կրկին բացեք տեղակայման փաթեթը՝ [name]-ի տեղադրումը ավարտելու համար։
 CannotContinue=Հնարավոր չէ շարունակել։ Սեղմեք «Չեղարկել»՝ ծրագիրը փակելու համար։
 ApplicationsFound=Հետևյալ ծրագրերը օգտագործում են ֆայլեր, որոնք պետք է թարմացվեն տեղակայիչի կողմից։ Թույլատրեք տեղակայիչին ինքնաբար փակելու այդ ծրագրերը։
-ApplicationsFound2=Հետևյալ ծրագրերը օգտագործում են ֆայլեր, որոնք պետք է թարմացվեն տեղակայիչի կողմից։ Թույլատրեք տեղակայիչին ինքնաբար փակելու այդ ծրագրերը։ Տեղադրումը ավարտելուց հետո տեղակայիչը կփորձի վերագործարկել այդ ծրագրերը։
-CloseApplications=&Ինքնավար փակել ծրագրերը
+ApplicationsFound2=Հետևյալ ծրագրերը օգտագործում են ֆայլեր, որոնք պետք է թարմացվեն տեղակայիչի կողմից։ Թույլատրեք տեղակայիչին ինքնաբար փակելու այդ ծրագրերը։ Տեղադրումը ավարտելուց հետո տեղակայիչը կփորձի վերամեկնարկել այդ ծրագրերը։
+CloseApplications=&Ինքնաբար փակել ծրագրերը
 DontCloseApplications=&Չփակել ծրագրերը
+ErrorCloseApplications=Տեղակայիչը չկարողացավ ինքնաբար փակել բոլոր ծրագրերը: Խորհուրդ ենք տալիս փակել այն բոլոր ծրագրերը, որոնք պետք է թարմացվեն տեղակայիչի կողմից:
 
 ; *** "Installing" wizard page
 WizardInstalling=Տեղադրում
@@ -212,11 +213,11 @@ FinishedHeadingLabel=[name]-ի տեղադրման ավարտ
 FinishedLabelNoIcons=[name] ծրագիրը տեղադրվել է Ձեր համակարգչում։
 FinishedLabel=[name] ծրագիրը տեղադրվել է Ձեր համակարգչում։
 ClickFinish=Սեղմեք «Ավարտել»՝ տեղակայիչը փակելու համար։
-FinishedRestartLabel=[name]-ի տեղադրումը ավարտելու համար պետք է վերագործարկել համակարգիչը։ Վերագործարկե՞լ հիմա։
-FinishedRestartMessage=[name]-ի տեղադրումը ավարտելու համար պետք է վերագործարկել համակարգիչը։ %n%nՎերագործարկե՞լ հիմա։
+FinishedRestartLabel=[name]-ի տեղադրումը ավարտելու համար պետք է վերամեկնարկել համակարգիչը։ վերամեկնարկե՞լ հիմա։
+FinishedRestartMessage=[name]-ի տեղադրումը ավարտելու համար պետք է վերամեկնարկել համակարգիչը։ %n%վերամեկնարկե՞լ հիմա։
 ShowReadmeCheck=Նայել README ֆայլը։
-YesRadio=&Այո, վերագործարկել
-NoRadio=&Ոչ, ես հետո վերագործարկեմ
+YesRadio=&Այո, վերամեկնարկել
+NoRadio=&Ոչ, ես հետո վերամեկնարկեմ
 ; used for example as 'Run MyProg.exe'
 RunEntryExec=Աշխատեցնել %1-ը
 ; used for example as 'View Readme.txt'
@@ -224,10 +225,10 @@ RunEntryShellExec=Նայել %1-ը
 
 ; *** "Setup Needs the Next Disk" stuff
 ChangeDiskTitle=Տեղակայիչը պահանջում է հաջորդ սկավառակը
-SelectDiskLabel2=Զետեղեք %1 սկավառակը և սեղմեք «ԼԱՎ»։ %n%nԵթե ֆայլերի թղթապանակը գտնվում է այլ տեղ, ապա ընտրեք ճիշտ ուղին կամ սեղմեք «Ընտրել»։
+SelectDiskLabel2=Զետեղեք %1 սկավառակը և սեղմեք «Լավ»։ %n%nԵթե ֆայլերի թղթապանակը գտնվում է այլ տեղ, ապա ընտրեք ճիշտ ուղին կամ սեղմեք «Ընտրել»։
 PathLabel=&Ուղին.
 FileNotInDir2="%1" ֆայլը չի գտնվել "%2"-ում։ Զետեղեք ճիշտ սկավառակ կամ ընտրեք այլ թղթապանակ։
-SelectDirectoryLabel=Խնդրում ենք նշել հաջորդ սկավառակի տեղադրույթունը։
+SelectDirectoryLabel=Խնդրում ենք նշել հաջորդ սկավառակի տեղադրությունը։
 
 ; *** Installation phase messages
 SetupAborted=Տեղակայումը չի ավարտվել։ %n%nՈւղղեք խնդիրը և կրկին փորձեք։
@@ -239,12 +240,12 @@ StatusCreateDirs=Թղթապանակների ստեղծում...
 StatusExtractFiles=Ֆայլերի դուրս բերում...
 StatusCreateIcons=Դյուրանցումների ստեղծում...
 StatusCreateIniEntries=INI ֆայլերի ստեղծում...
-StatusCreateRegistryEntries=Գրանցատեղի գրանցումների ստեղծում...
+StatusCreateRegistryEntries=Գրանցամատյանի գրանցումների ստեղծում...
 StatusRegisterFiles=Ֆայլերի գրանցում...
-StatusSavingUninstall=Ջնջելու տեղեկության պահում...
-StatusRunProgram=Տեղադրման ավարտ...
-StatusRestartingApplications=Ծրագրերի վերագործարկում...
-StatusRollback=Փոփոխությունների ետ բերում...
+StatusSavingUninstall=Ապատեղադրելու տեղեկության պահում...
+StatusRunProgram=Տեղադրելու ավարտ...
+StatusRestartingApplications=Ծրագրերի վերամեկնարկում...
+StatusRollback=Փոփոխությունների հետ բերում...
 
 ; *** Misc. errors
 ErrorInternal2=Ներքին սխալ %1
@@ -254,21 +255,21 @@ ErrorFunctionFailedWithMessage=%1. վթար, կոդը՝ %2.%n%3
 ErrorExecutingProgram=Հնարավոր չէ կատարել %n%1 ֆայլը
 
 ; *** Registry errors
-ErrorRegOpenKey=Գրանցատեղի բանալին բացելու սխալ՝ %n%1\%2
-ErrorRegCreateKey=Գրանցատեղի բանալին ստեղծելու սխալ՝ %n%1\%2
-ErrorRegWriteKey=Գրանցատեղի բանալում գրանցում անելու սխալ՝ %n%1\%2
+ErrorRegOpenKey=Գրանցամատյանի բանալին բացելու սխալ՝ %n%1\%2
+ErrorRegCreateKey=Գրանցամատյանի բանալին ստեղծելու սխալ՝ %n%1\%2
+ErrorRegWriteKey=Գրանցամատյանի բանալիում գրանցում կատարելու սխալ՝ %n%1\%2
 
 ; *** INI errors
 ErrorIniEntry=Սխալ՝ "%1" INI ֆայլում գրառում կատարելիս։
 
 ; *** File copying errors
-FileAbortRetryIgnore=Սեղմեք «Կրկնել»՝ կրկնելու համար, «Անտեսել»՝ ֆայլը բաց թողնելու համար (խորհուրդ չի տրվում) կամ «Ընդհատել»՝ փակելու համար։
-FileAbortRetryIgnore2=Սեղմեք «Կրկնել»՝ կրկնելու համար, «Անտեսել»՝ շաունակելու համար (խորհուրդ չի տրվում) կամ «Ընդհատել»՝ փակելու համար։
-SourceIsCorrupted=Նախնական ֆայլը վնասված է։
-SourceDoesntExist=Նախնական "%1" ֆայլը գոյություն չունի
-ExistingFileReadOnly=Գոյություն ունեցող ֆայլը նշված է միայն կարդալու համար է:%n%nՍեղմեք «Կրկնել»՝ ջնջելու համար միայն կարդալու համար հատկանիշը, «Անտեսել»՝ ֆայլը բաց թողնելու համար «Ընդհատել»՝ փակելու համար։
+FileAbortRetryIgnore=Սեղմեք «Կրկնել»՝ կրկին փորձելու համար, «Անտեսել»՝ ֆայլը բաց թողնելու համար (խորհուրդ չի տրվում) կամ «Ընդհատել»՝ փակելու համար։
+FileAbortRetryIgnore2=Սեղմեք «Կրկնել»՝ կրկին փորձելու համար, «Անտեսել»՝ շարունակելու համար (խորհուրդ չի տրվում) կամ «Ընդհատել»՝ փակելու համար։
+SourceIsCorrupted=Սկզբնական ֆայլը վնասված է։
+SourceDoesntExist=Սկզբնական "%1" ֆայլը գոյություն չունի
+ExistingFileReadOnly=Գոյություն ունեցող ֆայլը նշված է միայն կարդալու համար է:%n%nՍեղմեք «Կրկնել»՝ ջնջելու համար միայն կարդալու համար հատկանիշը, «Անտեսել»՝ ֆայլը բաց թողնելու համար, «Ընդհատել»՝ փակելու համար։
 ErrorReadingExistingDest=Սխալ՝ ֆայլը կարդալիս.
-FileExists=Ֆայլը գոյություն չունի։%n%nՎերագրե՞լ։
+FileExists=Ֆայլը գոյություն չունի։%n%nՎրագրե՞լ։
 ExistingFileNewer=Առկա ֆայլը ավելի նոր է, քան տեղադրվողը։ Խորհուրդ ենք տալիս պահել առկա ֆայլը։ %n%nՊահե՞լ առկա ֆայլը։
 ErrorChangingAttr=Սխալ՝ ընթացիկ ֆայլի հատկանիշները փոխելիս.
 ErrorCreatingTemp=Սխալ՝ նշված թղթապանակում ֆայլ ստեղծելիս.
@@ -279,37 +280,37 @@ ErrorRestartReplace=RestartReplace ձախողում.
 ErrorRenamingTemp=Սխալ՝ նպատակակետ թղթապանակում՝ ֆայլը վերանվանելիս.
 ErrorRegisterServer=Հնարավոր չէ գրանցել DLL/OCX-ը. %1
 ErrorRegSvr32Failed=RegSvr32-ի ձախողում, կոդ՝ %1
-ErrorRegisterTypeLib=Հնարավոր չէ գրանցել շտեմարանները՝ %1
+ErrorRegisterTypeLib=Հնարավոր չէ գրանցել դարանները՝ %1
 
 ; *** Post-installation errors
 ErrorOpeningReadme=Սխալ՝ README ֆայլը բացելիս։
-ErrorRestartingComputer=Հնարավոր չեղավ վերագործարկել համակարգիչը։ Ինքներդ փորձեք։
+ErrorRestartingComputer=Հնարավոր չեղավ վերամեկնարկել համակարգիչը։ Ինքներդ փորձեք։
 
 ; *** Uninstaller messages
-UninstallNotFound="%1" ֆայլը գոյություն չունի։ Հնարավոր չէ ջնջել։
-UninstallOpenError="%1" ֆայլը հնարավոր չէ բացել: Հնարավոր չէ ջնջել
-UninstallUnsupportedVer="%1"-ը ջնջելու մատյանի ֆայլը անճանաչելի է ջնջող ծրագրի այս տարբերակի համար։ Հնարավոր չէ ջնջել
-UninstallUnknownEntry=Անհայտ գրառում է (%1)՝ հայնաբերվել ջնջելու մատյանում
-ConfirmUninstall=Ջնջե՞լ %1-ը և նրա բոլոր բաղադրիչները։
-UninstallOnlyOnWin64=Հնարավոր է ջնջել միայն 64 բիթանոց Windows-ում։
-OnlyAdminCanUninstall=Հնարավոր է ջնջվել միայն Ադմինի իրավունքներով։
-UninstallStatusLabel=Խնդրում ենք սպասել, մինչև %1-ը ջնջվում է Ձեր համակարգչից։
-UninstalledAll=%1 ծրագիրը ջնջվել է համակարգչից։
-UninstalledMost=%1-ը ջնջվեց Ձեր համակարգչից։%n%nՈրոշ ֆայլեր հնարավոր չեղավ ջնջել։ Ինքներդ ջնջեք դրանք։
-UninstalledAndNeedsRestart=%1-ի ջնջումը ավարտելու համար պետք է վերագործարկել համակարգիչը։%n%nՎերագործարկե՞լ։
-UninstallDataCorrupted="%1" ֆայլը վնասված է։ Հնարավոր չէ ջնջել
+UninstallNotFound="%1" ֆայլը գոյություն չունի։ Հնարավոր չէ ապատեղադրել։
+UninstallOpenError="%1" ֆայլը հնարավոր չէ բացել: Հնարավոր չէ ապատեղադրել
+UninstallUnsupportedVer=Ապատեղադրելու "%1" մատյանի ֆայլը անճանաչելի է ապատեղադրող ծրագրի այս տարբերակի համար։ Հնարավոր չէ ապատեղադրել
+UninstallUnknownEntry=Անհայտ գրառում է (%1)՝ հայնաբերվել ապատեղադրելու մատյանում
+ConfirmUninstall=Ապատեղադրե՞լ %1-ը և նրա բոլոր բաղադրիչները։
+UninstallOnlyOnWin64=Հնարավոր է ապատեղադրել միայն 64 բիթանոց Windows-ում։
+OnlyAdminCanUninstall=Հնարավոր է ապատեղադրել միայն Ադմինի իրավունքներով։
+UninstallStatusLabel=Խնդրում ենք սպասել, մինչև %1-ը ապատեղադրվում է Ձեր համակարգչից։
+UninstalledAll=%1 ծրագիրը ապատեղադրվել է համակարգչից։
+UninstalledMost=%1-ը ապատեղադրվեց Ձեր համակարգչից։%n%nՈրոշ ֆայլեր հնարավոր չեղավ հեռացնել։ Ինքներդ հեռացրեք դրանք։
+UninstalledAndNeedsRestart=%1-ի ապատեղադրումը ավարտելու համար պետք է վերամեկնարկել համակարգիչը։%n%nՎերամեկնարկե՞լ։
+UninstallDataCorrupted="%1" ֆայլը վնասված է։ Հնարավոր չէ ապատեղադրել
 
 ; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=Ջնջե՞լ համատեղ օգտագործվող ֆայլը։
-ConfirmDeleteSharedFile2=Համակարգը նշում է, որ  հետևյալ համատեղ օգտագործվող ֆայլը այլևս չի օգտագործվում այլ ծրագրի կողմից։ Ջնջե՞լ այն։ %n%nԵթե համոզված չեք սեղմեք «Ոչ»։
+ConfirmDeleteSharedFileTitle=Հեռացնե՞լ համատեղ օգտագործվող ֆայլը։
+ConfirmDeleteSharedFile2=Համակարգը նշում է, որ  հետևյալ համատեղ օգտագործվող ֆայլը այլևս չի օգտագործվում այլ ծրագրի կողմից։ Ապատեղադրե՞լ այն։ %n%nԵթե համոզված չեք սեղմեք «Ոչ»։
 SharedFileNameLabel=Ֆայլի անուն.
 SharedFileLocationLabel=Տեղադրություն.
-WizardUninstalling=Ջնջելու վիճակ
-StatusUninstalling=%1-ի ջնջում...
+WizardUninstalling=Ապատեղադրելու վիճակ
+StatusUninstalling=%1-ի ապատեղադրում...
 
 ; *** Shutdown block reasons
 ShutdownBlockReasonInstallingApp=%1-ի տեղադրում։
-ShutdownBlockReasonUninstallingApp=%1-ի ջնջում։
+ShutdownBlockReasonUninstallingApp=%1-ի ապատեղադրում։
 
 ; The custom messages below aren't used by Setup itself, but if you make
 ; use of them in your scripts, you'll want to translate them.
@@ -318,10 +319,10 @@ ShutdownBlockReasonUninstallingApp=%1-ի ջնջում։
 
 NameAndVersion=%1 տարբերակ՝ %2
 AdditionalIcons=Լրացուցիչ դյուրանցումներ
-CreateDesktopIcon=Ստեղծել դյուրանցումը &Աշխատասեղանին
-CreateQuickLaunchIcon=Ստեղծել դյուրանցումը &Արագ թողարկման գոտում
+CreateDesktopIcon=Ստեղծել դյուրանցում &Աշխատասեղանին
+CreateQuickLaunchIcon=Ստեղծել դյուրանցում &Արագ թողարկման գոտում
 ProgramOnTheWeb=%1-ի վեբ կայքը
-UninstallProgram=Ջնջել %1-ը
+UninstallProgram=%1-ի ապատեղադրում
 LaunchProgram=Բացել %1-ը
 AssocFileExtension=Ասո&ցիացնել %1-ը %2 ֆայլերի հետ։
 AssocingFileExtension=%1-ը ասոցիացվում է ֆայլերի %2 ընդլայնումների հետ...

+ 147 - 144
Files/Languages/Polish.isl

@@ -1,8 +1,9 @@
 ; *** Inno Setup version 5.5.3+ Polish messages ***
 ; Krzysztof Cynarski <krzysztof at cynarski.net>
-;
+; Proofreading and corrections:
+; Łukasz Abramczuk <lukasz.abramczuk at gmail.com>
 ; To download user-contributed translations of this file, go to:
-;   http://www.jrsoftware.org/is3rdparty.php
+; http://www.jrsoftware.org/is3rdparty.php
 ;
 ; Note: When translating this text, do not add periods (.) to the end of
 ; messages that didn't have them already, because on those messages Inno
@@ -10,19 +11,21 @@
 ; two periods being displayed).
 ;
 ; $jrsoftware: issrc/Files/Languages/Polish.isl,v 1.16 2007/03/09 16:56:52 jr Exp $
+; last update: 2016/01/14 
 
 [LangOptions]
 LanguageName=Polski
 LanguageID=$0415
 LanguageCodePage=1250
+ 
 
 [Messages]
-
+  
 ; *** Application titles
 SetupAppTitle=Instalator
 SetupWindowTitle=Instalacja - %1
-UninstallAppTitle=Deinstalacja
-UninstallAppFullTitle=Odinstaluj %1
+UninstallAppTitle=Dezinstalator
+UninstallAppFullTitle=Dezinstalacja - %1
 
 ; *** Misc. common
 InformationTitle=Informacja
@@ -32,40 +35,40 @@ ErrorTitle=B
 ; *** SetupLdr messages
 SetupLdrStartupMessage=Ten program zainstaluje aplikację %1. Czy chcesz kontynuować?
 LdrCannotCreateTemp=Nie można utworzyć pliku tymczasowego. Instalacja przerwana
-LdrCannotExecTemp=Nie można uruchomić pliku w folderze tymczasowym. Instalacja przerwana
+LdrCannotExecTemp=Nie można uruchomić pliku z folderu tymczasowego. Instalacja przerwana
 
 ; *** Startup error messages
 LastErrorMessage=%1.%n%nBłąd %2: %3
-SetupFileMissing=W folderze instalacyjnym brak pliku %1.%nProszę usunąć problem lub uzyskać nową kopię programu instalacyjnego.
-SetupFileCorrupt=Pliki składowe Instalatora są uszkodzone. Proszę uzyskać nową kopię Instalatora od producenta.
-SetupFileCorruptOrWrongVer=Pliki składowe instalatora są uszkodzone lub niezgodne z tą wersją Instalatora. Proszę rozwiązać ten problem lub uzyskać nową kopię Instalatora od producenta.
-InvalidParameter=W lini komend został przekazany nieprawidłowy parametr:%n%n%1
+SetupFileMissing=W folderze instalacyjnym brakuje pliku %1.%nProszę o przywrócenie brakujących plików lub uzyskanie nowej kopii programu instalacyjnego.
+SetupFileCorrupt=Pliki instalacyjne są uszkodzone. Zaleca się uzyskanie nowej kopii programu instalacyjnego.
+SetupFileCorruptOrWrongVer=Pliki instalacyjne są uszkodzone lub niezgodne z tą wersją instalatora. Proszę rozwiązać problem lub uzyskać nową kopię programu instalacyjnego.
+InvalidParameter=W linii komend przekazano nieprawidłowy parametr:%n%n%1
 SetupAlreadyRunning=Instalator jest już uruchomiony.
-WindowsVersionNotSupported=Ten program nie wspiera aktualnie uruchomionej na Twoim komputerze wersji Windows.
-WindowsServicePackRequired=Ten program wymaga %1 z dodatkiem Service Pack %2 lub późniejszym.
-NotOnThisPlatform=Tego programu nie można uruchomić w systemie %1.
-OnlyOnThisPlatform=Ten program wymaga systemu %1.
-OnlyOnTheseArchitectures=Ten program może być uruchomiony tylko w systemie Windows zaprojektowanym na procesory o architekturach:%n%n%1
-MissingWOW64APIs=Ta wersja systemu Windows nie zawiera komponentów niezbędnych do przeprowadzenia 64 bitowej instalacji. Aby usunąć ten problem, proszę zainstalować Service Pack %1.
-WinVersionTooLowError=Ten program wymaga %1 w wersji %2 lub późniejszej.
-WinVersionTooHighError=Ten program nie może być zainstalowany w wersji %2 lub późniejszej systemu %1.
-AdminPrivilegesRequired=Aby przeprowadzić instalację tego programu, Użytkownik musi być zalogowany z uprawnieniami administratora.
-PowerUserPrivilegesRequired=Aby przeprowadzić instalację tego programu, Użytkownik musi być zalogowany z uprawnieniami administratora lub użytkownika zaawansowanego.
-SetupAppRunningError=Instalator wykrył, że %1 jest aktualnie uruchomiony.%n%nZamknij wszystkie okienka tej aplikacji, a potem wybierz przycisk OK, aby kontynuować, lub Anuluj, aby przerwać instalację.
-UninstallAppRunningError=Deinstalator wykrył, że %1 jest aktualnie uruchomiony.%n%nZamknij teraz wszystkie okna tej aplikacji, a następnie wybierz przycisk OK, aby kontynuować, lub Anuluj, aby przerwać deinstalacje.
+WindowsVersionNotSupported=Ta aplikacja nie wspiera aktualnie uruchomionej wersji Windows.
+WindowsServicePackRequired=Ta aplikacja wymaga systemu %1 z dodatkiem Service Pack %2 lub nowszym.
+NotOnThisPlatform=Tej aplikacji nie można uruchomić w systemie %1.
+OnlyOnThisPlatform=Ta aplikacja wymaga systemu %1.
+OnlyOnTheseArchitectures=Ta aplikacja może być uruchomiona tylko w systemie Windows zaprojektowanym dla procesorów o architekturze:%n%n%1
+MissingWOW64APIs=Ta wersja systemu Windows nie zawiera komponentów niezbędnych do przeprowadzenia 64-bitowej instalacji. Aby rozwiązać ten problem, proszę zainstalować Service Pack %1.
+WinVersionTooLowError=Ta aplikacja wymaga systemu %1 w wersji %2 lub nowszej.
+WinVersionTooHighError=Ta aplikacja nie może być zainstalowana w systemie %1 w wersji %2 lub nowszej.
+AdminPrivilegesRequired=Aby przeprowadzić instalację tej aplikacji, konto użytkownika systemu musi posiadać uprawnienia administratora.
+PowerUserPrivilegesRequired=Aby przeprowadzić instalację tej aplikacji, konto użytkownika systemu musi posiadać uprawnienia administratora lub użytkownika zaawansowanego.
+SetupAppRunningError=Instalator wykrył, iż aplikacja %1 jest aktualnie uruchomiona.%n%nPrzed wciśnięciem przycisku OK zamknij wszystkie procesy aplikacji. Kliknij przycisk Anuluj, aby przerwać instalację.
+UninstallAppRunningError=Dezinstalator wykrył, iż aplikacja %1 jest aktualnie uruchomiona.%n%nPrzed wciśnięciem przycisku OK zamknij wszystkie procesy aplikacji. Kliknij przycisk Anuluj, aby przerwać dezinstalację.
 
 ; *** Misc. errors
-ErrorCreatingDir=Instalator nie mógł utworzyć foldera "%1"
-ErrorTooManyFilesInDir=Nie można utworzyć pliku w folderze %1, ponieważ zawiera on za dużo plików
+ErrorCreatingDir=Instalator nie mógł utworzyć katalogu "%1"
+ErrorTooManyFilesInDir=Nie można utworzyć pliku w katalogu %1, ponieważ zawiera on zbyt wiele plików
 
 ; *** Setup common messages
 ExitSetupTitle=Zakończ instalację
-ExitSetupMessage=Instalacja nie jest zakończona. Jeżeli przerwiesz ją teraz, program nie zostanie zainstalowany. Można ponowić instalację później, uruchamiając pakiet Instalatora.%n%nCzy chcesz przerwać instalację ?
-AboutSetupMenuItem=&O Instalatorze...
-AboutSetupTitle=O Instalatorze
+ExitSetupMessage=Instalacja nie została zakończona. Jeżeli przerwiesz ją teraz, aplikacja nie zostanie zainstalowana. Można ponowić instalację później poprzez uruchamianie instalatora.%n%nCzy chcesz przerwać instalację ?
+AboutSetupMenuItem=&O instalatorze...
+AboutSetupTitle=O instalatorze
 AboutSetupMessage=%1 wersja %2%n%3%n%n Strona domowa %1:%n%4
 AboutSetupNote=
-TranslatorNote=Wersja Polska: Krzysztof Cynarski%n<krzysztof at cynarski.net>
+TranslatorNote=Wersja polska: Krzysztof Cynarski%n<krzysztof at cynarski.net>%nKorekta: Łukasz Abramczuk%n<lukasz.abramczuk at gmail.com>
 
 ; *** Buttons
 ButtonBack=< &Wstecz
@@ -81,247 +84,247 @@ ButtonFinish=&Zako
 ButtonBrowse=&Przeglądaj...
 ButtonWizardBrowse=P&rzeglądaj...
 ButtonNewFolder=&Utwórz nowy folder
-
+ 
 ; *** "Select Language" dialog messages
-SelectLanguageTitle=Wybierz język instalacji
+SelectLanguageTitle=Język instalacji
 SelectLanguageLabel=Wybierz język używany podczas instalacji:
 
 ; *** Common wizard text
-ClickNext=Wybierz przycisk Dalej, aby kontynuować, lub Anuluj, aby zakończyć instalację.
+ClickNext=Kliknij przycisk Dalej, aby kontynuować, lub Anuluj, aby zakończyć instalację.
 BeveledLabel=
 BrowseDialogTitle=Wskaż folder
-BrowseDialogLabel=Wybierz folder z poniższej listy, a następnie wybierz przycisk OK.
+BrowseDialogLabel=Wybierz folder z poniższej listy, a następnie kliknij przycisk OK.
 NewFolderName=Nowy folder
 
 ; *** "Welcome" wizard page
-WelcomeLabel1=Witamy w Kreatorze instalacji programu [name].
-WelcomeLabel2=Instalator zainstaluje teraz program [name/ver] na Twoim komputerze.%n%nZalecane jest zamknięcie wszystkich innych uruchomionych programów przed rozpoczęciem procesu instalacji.
+WelcomeLabel1=Witamy w instalatorze aplikacji [name]
+WelcomeLabel2=Aplikacja [name/ver] zostanie teraz zainstalowana na komputerze.%n%nZalecane jest zamknięcie wszystkich innych uruchomionych programów przed rozpoczęciem procesu instalacji.
 
 ; *** "Password" wizard page
 WizardPassword=Hasło
 PasswordLabel1=Ta instalacja jest zabezpieczona hasłem.
-PasswordLabel3=Podaj hasło, potem wybierz przycisk Dalej, aby kontynuować. W hasłach rozróżniane są duże i małe litery.
+PasswordLabel3=Podaj hasło, a następnie kliknij przycisk Dalej, aby kontynuować. W hasłach rozróżniane są wielkie i małe litery.
 PasswordEditLabel=&Hasło:
-IncorrectPassword=Wprowadzone hasło nie jest poprawne. Spróbuj ponownie.
+IncorrectPassword=Wprowadzone hasło jest nieprawidłowe. Spróbuj ponownie.
 
 ; *** "License Agreement" wizard page
 WizardLicense=Umowa Licencyjna
-LicenseLabel=Przed kontynuacją proszę przeczytać poniższe ważne informacje.
-LicenseLabel3=Proszę przeczytać tekst Umowy Licencyjnej. Musisz zgodzić się na warunki tej umowy przed kontynuacją instalacji.
+LicenseLabel=Przed kontynuacją należy zapoznać się z poniższą ważną informacją.
+LicenseLabel3=Proszę przeczytać tekst Umowy Licencyjnej. Przed kontynuacją instalacji należy zaakceptować powyższe warunki.
 LicenseAccepted=&Akceptuję warunki umowy
 LicenseNotAccepted=&Nie akceptuję warunków umowy
 
 ; *** "Information" wizard pages
 WizardInfoBefore=Informacja
-InfoBeforeLabel=Przed przejściem do dalszego etapu instalacji, proszę przeczytać poniższą informację.
+InfoBeforeLabel=Przed kontynuacją należy zapoznać się z poniższą informacją.
 InfoBeforeClickLabel=Kiedy będziesz gotowy do instalacji, kliknij przycisk Dalej.
 WizardInfoAfter=Informacja
-InfoAfterLabel=Przed przejściem do dalszego etapu instalacji, proszę przeczytać poniższą informację.
+InfoAfterLabel=Przed kontynuacją należy zapoznać się z poniższą informacją.
 InfoAfterClickLabel=Gdy będziesz gotowy do zakończenia instalacji, kliknij przycisk Dalej.
 
 ; *** "User Information" wizard page
-WizardUserInfo=Dane Użytkownika
+WizardUserInfo=Dane użytkownika
 UserInfoDesc=Proszę podać swoje dane.
-UserInfoName=&Nazwisko:
+UserInfoName=Nazwa &użytkownika:
 UserInfoOrg=&Organizacja:
 UserInfoSerial=Numer &seryjny:
-UserInfoNameRequired=Musisz podać nazwisko.
+UserInfoNameRequired=Nazwa użytkownika jest wymagana.
 
 ; *** "Select Destination Location" wizard page
-WizardSelectDir=Wybierz docelową lokalizację
-SelectDirDesc=Gdzie ma być zainstalowany program [name]?
-SelectDirLabel3=Instalator zainstaluje program [name] do poniższego folderu.
-SelectDirBrowseLabel=Kliknij przycisk Dalej, aby kontynuować. Jeśli chcesz określić inny folder, kliknij przycisk Przeglądaj.
-DiskSpaceMBLabel=Potrzeba przynajmniej [mb] MB wolnego miejsca na dysku.
-CannotInstallToNetworkDrive=Instalator nie może zainstalować programu na dysku sieciowym.
-CannotInstallToUNCPath=Instalator nie może zainstalować programu w ścieżce UNC.
-InvalidPath=Musisz wprowadzić pełną ścieżkę wraz z literą dysku, np.:%n%nC:\PROGRAM%n%nlub scieżkę sieciową (UNC) w formacie:%n%n\\serwer\udział
+WizardSelectDir=Lokalizacja docelowa
+SelectDirDesc=Gdzie ma zostać zainstalowana aplikacja [name]?
+SelectDirLabel3=Instalator zainstaluje aplikację [name] do poniższego folderu.
+SelectDirBrowseLabel=Kliknij przycisk Dalej, aby kontynuować. Jeśli chcesz wskazać inny folder, kliknij przycisk Przeglądaj.
+DiskSpaceMBLabel=Wymagane jest przynajmniej [mb] MB wolnego miejsca na dysku.
+CannotInstallToNetworkDrive=Instalator nie może zainstalować aplikacji na dysku sieciowym.
+CannotInstallToUNCPath=Instalator nie może zainstalować aplikacji w ścieżce UNC.
+InvalidPath=Należy wprowadzić pełną ścieżkę wraz z literą dysku, np.:%n%nC:\PROGRAM%n%nlub ścieżkę sieciową (UNC) w formacie:%n%n\\serwer\udział
 InvalidDrive=Wybrany dysk lub udostępniony folder sieciowy nie istnieje. Proszę wybrać inny.
 DiskSpaceWarningTitle=Niewystarczająca ilość wolnego miejsca na dysku
-DiskSpaceWarning=Instalator wymaga co najmniej %1 KB wolnego miejsca na dysku. Wybrany dysk posiada tylko %2 KB dostępnego miejsca.%n%nCzy pomimo to chcesz kontynuować?
+DiskSpaceWarning=Instalator wymaga co najmniej %1 KB wolnego miejsca na dysku. Wybrany dysk posiada tylko %2 KB dostępnego miejsca.%n%nCzy mimo to chcesz kontynuować?
 DirNameTooLong=Nazwa folderu lub ścieżki jest za długa.
 InvalidDirName=Niepoprawna nazwa folderu.
 BadDirName32=Nazwa folderu nie może zawierać żadnego z następujących znaków:%n%n%1
-DirExistsTitle=Ten folder już istnieje
-DirExists=Folder%n%n%1%n%njuż istnieje. Czy pomimo to chcesz zainstalować program w tym folderze?
-DirDoesntExistTitle=Nie ma takiego folderu
-DirDoesntExist=Folder:%n%n%1%n%nnie istnieje. Czy chcesz, aby został utworzony?
+DirExistsTitle=Folder już istnieje
+DirExists=Poniższy folder już istnieje:%n%n%1%n%nCzy mimo to chcesz zainstalować aplikację w tym folderze?
+DirDoesntExistTitle=Folder nie istnieje
+DirDoesntExist=Poniższy folder nie istnieje:%n%n%1%n%nCzy chcesz, aby został utworzony?
 
 ; *** "Select Components" wizard page
-WizardSelectComponents=Zaznacz komponenty
-SelectComponentsDesc=Które komponenty mają być zainstalowane?
-SelectComponentsLabel2=Zaznacz komponenty, które chcesz zainstalować, odznacz te, których nie chcesz zainstalować. Kliknij przycisk Dalej, aby kontynuować.
+WizardSelectComponents=Komponenty instalacji
+SelectComponentsDesc=Które komponenty mają zostać zainstalowane?
+SelectComponentsLabel2=Zaznacz komponenty, które chcesz zainstalować i odznacz te, których nie chcesz zainstalować. Kliknij przycisk Dalej, aby kontynuować.
 FullInstallation=Instalacja pełna
 ; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
 CompactInstallation=Instalacja podstawowa
 CustomInstallation=Instalacja użytkownika
 NoUninstallWarningTitle=Zainstalowane komponenty
-NoUninstallWarning=Instalator wykrył, że w twoim komputerze są już zainstalowane następujące komponenty:%n%n%1%n%nOdznaczenie któregokolwiek z nich nie spowoduje ich deinstalacji.%n%nCzy pomimo tego chcesz kontynuować?
+NoUninstallWarning=Instalator wykrył, że na komputerze są już zainstalowane następujące komponenty:%n%n%1%n%nOdznaczenie któregokolwiek z nich nie spowoduje ich dezinstalacji.%n%nCzy pomimo tego chcesz kontynuować?
 ComponentSize1=%1 KB
 ComponentSize2=%1 MB
 ComponentsDiskSpaceMBLabel=Wybrane komponenty wymagają co najmniej [mb] MB na dysku.
 
 ; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=Zaznacz dodatkowe zadania
-SelectTasksDesc=Które dodatkowe zadania mają być wykonane?
-SelectTasksLabel2=Zaznacz dodatkowe zadania, które Instalator ma wykonać podczas instalacji programu [name], a następnie kliknij przycisk Dalej, aby kontynuować.
+WizardSelectTasks=Zadania dodatkowe
+SelectTasksDesc=Które zadania dodatkowe mają zostać wykonane?
+SelectTasksLabel2=Zaznacz dodatkowe zadania, które instalator ma wykonać podczas instalacji aplikacji [name], a następnie kliknij przycisk Dalej, aby kontynuować.
 
 ; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Wybierz folder Menu Start
-SelectStartMenuFolderDesc=Gdzie mają być umieszczone skróty do programu?
-SelectStartMenuFolderLabel3=Instalator stworzy skróty do programu w poniższym folderze Menu Start.
-SelectStartMenuFolderBrowseLabel=Kliknij przycisk Dalej, aby kontynuować. Jeśli chcesz określić inny folder, kliknij przycisk Przeglądaj.
+WizardSelectProgramGroup=Folder Menu Start
+SelectStartMenuFolderDesc=Gdzie mają zostać umieszczone skróty do aplikacji?
+SelectStartMenuFolderLabel3=Instalator utworzy skróty do aplikacji w poniższym folderze Menu Start.
+SelectStartMenuFolderBrowseLabel=Kliknij przycisk Dalej, aby kontynuować. Jeśli chcesz wskazać inny folder, kliknij przycisk Przeglądaj.
 MustEnterGroupName=Musisz wprowadzić nazwę folderu.
 GroupNameTooLong=Nazwa folderu lub ścieżki jest za długa.
 InvalidGroupName=Niepoprawna nazwa folderu.
 BadGroupName=Nazwa folderu nie może zawierać żadnego z następujących znaków:%n%n%1
-NoProgramGroupCheck2=Nie twórz folderu w &Menu Start
-
+NoProgramGroupCheck2=&Nie twórz folderu w Menu Start
+	
 ; *** "Ready to Install" wizard page
 WizardReady=Gotowy do rozpoczęcia instalacji
-ReadyLabel1=Instalator jest już gotowy do rozpoczęcia instalacji programu [name] na twoim komputerze.
+ReadyLabel1=Instalator jest już gotowy do rozpoczęcia instalacji aplikacji [name] na komputerze.
 ReadyLabel2a=Kliknij przycisk Instaluj, aby rozpocząć instalację lub Wstecz, jeśli chcesz przejrzeć lub zmienić ustawienia.
 ReadyLabel2b=Kliknij przycisk Instaluj, aby kontynuować instalację.
-ReadyMemoUserInfo=Informacje użytkownika:
+ReadyMemoUserInfo=Dane użytkownika:
 ReadyMemoDir=Lokalizacja docelowa:
 ReadyMemoType=Rodzaj instalacji:
 ReadyMemoComponents=Wybrane komponenty:
 ReadyMemoGroup=Folder w Menu Start:
 ReadyMemoTasks=Dodatkowe zadania:
-
+  
 ; *** "Preparing to Install" wizard page
 WizardPreparing=Przygotowanie do instalacji
-PreparingDesc=Instalator przygotowuje instalację programu [name] na Twoim komputerze.
-PreviousInstallNotCompleted=Instalacja (usunięcie) poprzedniej wersji programu nie została zakończona. Będziesz musiał ponownie uruchomić komputer, aby zakończyć instalację. %n%nPo ponownym uruchomieniu komputera uruchom ponownie instalatora, aby zakończyć instalację aplikacji [name].
+PreparingDesc=Instalator przygotowuje instalację aplikacji [name] na komputerze.
+PreviousInstallNotCompleted=Instalacja/dezinstalacja poprzedniej wersji aplikacji nie została zakończona. Aby zakończyć instalację, należy ponownie uruchomić komputer. %n%nNastępnie ponownie uruchom instalator, aby zakończyć instalację aplikacji [name].
 CannotContinue=Instalator nie może kontynuować. Kliknij przycisk Anuluj, aby przerwać instalację.
-ApplicationsFound=Poniższe aplikacje używają plików, które muszą być uaktualnione przez Instalator. Zalecane jest aby pozwolić Instalatorowi automatycznie zamknąć te aplikacje.
-ApplicationsFound2=Poniższe aplikacje używają plików, które muszą być uaktualnione przez Instalator. Zalecane jest aby pozwolić Instalatorowi automatycznie zamknąć te aplikacje. Po zakończonej instalacji Instalator podejmie próbę ich ponownego uruchomienia.
+ApplicationsFound=Poniższe aplikacje używają plików, które muszą zostać uaktualnione przez instalator. Zaleca się zezwolić na automatyczne zamknięcie tych aplikacji przez program instalacyjny.
+ApplicationsFound2=Poniższe aplikacje używają plików, które muszą zostać uaktualnione przez instalator. Zaleca się zezwolić na automatyczne zamknięcie tych aplikacji przez program instalacyjny. Po zakończonej instalacji instalator podejmie próbę ich ponownego uruchomienia.
 CloseApplications=&Automatycznie zamknij aplikacje
 DontCloseApplications=&Nie zamykaj aplikacji
-ErrorCloseApplications=Instalator nie był w stanie zamknąć automatycznie wszystkich aplikacji. Zalecane jest zamknięcie wszystkich tych aplikacji, które akualnie używają uakutalnianych przez Instalator plików.
-
+ErrorCloseApplications=Instalator nie był w stanie automatycznie zamknąć wymaganych aplikacji. Zalecane jest zamknięcie wszystkich aplikacji, które aktualnie używają uaktualnianych przez program instalacyjny plików.
+ 
 ; *** "Installing" wizard page
 WizardInstalling=Instalacja
-InstallingLabel=Poczekaj, aż instalator zainstaluje aplikację [name] na Twoim komputerze.
-
+InstallingLabel=Poczekaj, aż instalator zainstaluje aplikację [name] na komputerze.
+ 
 ; *** "Setup Completed" wizard page
-FinishedHeadingLabel=Zakończono instalację programu [name]
-FinishedLabelNoIcons=Instalator zakończył instalację programu [name] na Twoim komputerze.
-FinishedLabel=Instalator zakończył instalację programu [name] na Twoim komputerze. Aplikacja może być uruchomiona poprzez użycie zainstalowanych skrótów.
+FinishedHeadingLabel=Zakończono instalację aplikacji [name]
+FinishedLabelNoIcons=Instalator zakończył instalację aplikacji [name] na komputerze.
+FinishedLabel=Instalator zakończył instalację aplikacji [name] na komputerze. Aplikacja może być uruchomiona poprzez użycie zainstalowanych skrótów.
 ClickFinish=Kliknij przycisk Zakończ, aby zakończyć instalację.
-FinishedRestartLabel=Aby zakończyć instalację programu [name], Instalator musi ponownie uruchomić Twój komputer. Czy chcesz teraz wykonać restart komputera?
-FinishedRestartMessage=Aby zakończyć instalację programu [name], Instalator musi ponownie uruchomić Twój komputer.%n%nCzy chcesz teraz wykonać restart komputera?
+FinishedRestartLabel=Aby zakończyć instalację aplikacji [name], instalator musi ponownie uruchomić komputer. Czy chcesz teraz uruchomić komputer ponownie?
+FinishedRestartMessage=Aby zakończyć instalację aplikacji [name], instalator musi ponownie uruchomić komputer.%n%nCzy chcesz teraz uruchomić komputer ponownie?
 ShowReadmeCheck=Tak, chcę przeczytać dodatkowe informacje
-YesRadio=&Tak, teraz uruchom ponownie
-NoRadio=&Nie, sam zrestartuję później
+YesRadio=&Tak, uruchom ponownie teraz
+NoRadio=&Nie, uruchomię ponownie później
 ; used for example as 'Run MyProg.exe'
-RunEntryExec=Uruchom %1
+RunEntryExec=Uruchom aplikację %1
 ; used for example as 'View Readme.txt'
-RunEntryShellExec=Pokaż %1
-
+RunEntryShellExec=Wyświetl plik %1
+ 
 ; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=Instalator potrzebuje następnej dyskietki
-SelectDiskLabel2=Proszę włożyć dyskietkę %1 i kliknąć przycisk OK.%n%nJeśli pokazany poniżej folder nie określa położenia plików z tej dyskietki, wprowadź poprawną ścieżkę lub kliknij przycisk Przeglądaj.
+ChangeDiskTitle=Instalator potrzebuje kolejnego archiwum
+SelectDiskLabel2=Proszę włożyć dysk %1 i kliknąć przycisk OK.%n%nJeśli wymieniony poniżej folder nie określa położenia plików z tego dysku, proszę wprowadzić poprawną ścieżkę lub kliknąć przycisk Przeglądaj.
 PathLabel=Ś&cieżka:
-FileNotInDir2=Plik "%1" nie został znaleziony na dyskietce "%2". Proszę włożyć właściwą dyskietkę lub wybrać inny folder.
-SelectDirectoryLabel=Proszę określić lokalizację następnej dyskietki.
-
+FileNotInDir2=Ścieżka "%2" nie zawiera pliku "%1". Proszę włożyć właściwy dysk lub wybrać inny folder.
+SelectDirectoryLabel=Proszę określić lokalizację kolejnego archiwum instalatora.
+  
 ; *** Installation phase messages
 SetupAborted=Instalacja nie została zakończona.%n%nProszę rozwiązać problem i ponownie rozpocząć instalację.
-EntryAbortRetryIgnore=Możesz ponowić nieudaną czynność, zignorować ją (nie zalecane) lub przerwać instalację.
-
+EntryAbortRetryIgnore=Możesz ponowić nieudaną czynność, zignorować ją (niezalecane) lub przerwać instalację.
+  
 ; *** Installation status messages
 StatusClosingApplications=Zamykanie aplikacji...
 StatusCreateDirs=Tworzenie folderów...
 StatusExtractFiles=Dekompresja plików...
-StatusCreateIcons=Tworzenie ikon aplikacji...
+StatusCreateIcons=Tworzenie skrótów aplikacji...
 StatusCreateIniEntries=Tworzenie zapisów w plikach INI...
 StatusCreateRegistryEntries=Tworzenie zapisów w rejestrze...
 StatusRegisterFiles=Rejestracja plików...
-StatusSavingUninstall=Zachowanie informacji deinstalatora...
+StatusSavingUninstall=Zapisywanie informacji o dezinstalacji...
 StatusRunProgram=Kończenie instalacji...
 StatusRestartingApplications=Ponowne uruchamianie aplikacji...
 StatusRollback=Cofanie zmian...
-
+ 
 ; *** Misc. errors
 ErrorInternal2=Wewnętrzny błąd: %1
 ErrorFunctionFailedNoCode=Błąd podczas wykonywania %1
 ErrorFunctionFailed=Błąd podczas wykonywania %1; kod %2
-ErrorFunctionFailedWithMessage=Błąd podczas wykonywania %1; code %2.%n%3
+ErrorFunctionFailedWithMessage=Błąd podczas wykonywania %1; kod %2.%n%3
 ErrorExecutingProgram=Nie można uruchomić:%n%1
 
 ; *** Registry errors
 ErrorRegOpenKey=Błąd podczas otwierania klucza rejestru:%n%1\%2
 ErrorRegCreateKey=Błąd podczas tworzenia klucza rejestru:%n%1\%2
 ErrorRegWriteKey=Błąd podczas zapisu do klucza rejestru:%n%1\%2
-
+ 
 ; *** INI errors
 ErrorIniEntry=Błąd podczas tworzenia pozycji w pliku INI: "%1".
-
+ 
 ; *** File copying errors
-FileAbortRetryIgnore=Możesz ponowić nieudaną czynność, zignorować ją, aby ominąć ten plik (nie zalecane), lub przerwać instalację.
-FileAbortRetryIgnore2=Możesz ponowić nieudaną czynność, zignorować ją (nie zalecane) lub przerwać instalację.
+FileAbortRetryIgnore=Możesz ponowić nieudaną czynność, zignorować ją i ominąć ten plik (niezalecane) lub przerwać instalację.
+FileAbortRetryIgnore2=Możesz ponowić nieudaną czynność, zignorować ją (niezalecane) lub przerwać instalację.
 SourceIsCorrupted=Plik źródłowy jest uszkodzony
 SourceDoesntExist=Plik źródłowy "%1" nie istnieje
-ExistingFileReadOnly=Istniejący plik jest oznaczony jako tylko-do-odczytu.%n%nMożesz ponowić (aby usunąć oznaczenie) zignorować (aby ominąć ten plik) lub przerwać instalację.
+ExistingFileReadOnly=Istniejący plik jest oznaczony jako "Tylko do odczytu".%n%nMożesz ponowić (aby usunąć oznaczenie), zignorować (aby ominąć ten plik) lub przerwać instalację.
 ErrorReadingExistingDest=Wystąpił błąd podczas próby odczytu istniejącego pliku:
-FileExists=Plik już istnieje.%n%nCzy chcesz, aby Instalator zamienił go na nowy?
-ExistingFileNewer=Istniejący plik jest nowszy niż ten, który Instalator próbuje skopiować. Zalecanym jest zachowanie istniejącego pliku.%n%nCzy chcesz zachować istniejący plik?
-ErrorChangingAttr=Wystąpił błąd podczas próby zmiany atrybutów docelowego pliku:
+FileExists=Plik już istnieje.%n%nCzy chcesz, aby instalator nadpisał go własną wersją?
+ExistingFileNewer=Istniejący plik jest nowszy niż ten, który instalator próbuje skopiować. Zalecanym jest zachowanie istniejącego pliku.%n%nCzy chcesz zachować istniejący plik?
+ErrorChangingAttr=Wystąpił błąd podczas próby zmiany atrybutów pliku docelowego:
 ErrorCreatingTemp=Wystąpił błąd podczas próby utworzenia pliku w folderze docelowym:
 ErrorReadingSource=Wystąpił błąd podczas próby odczytu pliku źródłowego:
 ErrorCopying=Wystąpił błąd podczas próby kopiowania pliku:
 ErrorReplacingExistingFile=Wystąpił błąd podczas próby zamiany istniejącego pliku:
-ErrorRestartReplace=Próba zastąpienia plików podczas restartu komputera nie powiodła się.
+ErrorRestartReplace=Próba zastąpienia plików przy ponownym uruchomieniu komputera nie powiodła się.
 ErrorRenamingTemp=Wystąpił błąd podczas próby zmiany nazwy pliku w folderze docelowym:
 ErrorRegisterServer=Nie można zarejestrować DLL/OCX: %1
-ErrorRegSvr32Failed=Funkcja RegSvr32 zakończyła sie z kodem błędu %1
+ErrorRegSvr32Failed=Funkcja RegSvr32 zakończyła się z kodem błędu %1
 ErrorRegisterTypeLib=Nie mogę zarejestrować biblioteki typów: %1
 
 ; *** Post-installation errors
-ErrorOpeningReadme=Wystąpił błąd podczas próby otwarcia pliku README.
-ErrorRestartingComputer=Instalator nie mógł zrestartować tego komputera. Proszę zrobić to samodzielnie.
+ErrorOpeningReadme=Wystąpił błąd podczas próby otwarcia pliku z informacjami dodatkowymi.
+ErrorRestartingComputer=Instalator nie mógł ponownie uruchomić tego komputera. Proszę wykonać tę czynność samodzielnie.
 
 ; *** Uninstaller messages
-UninstallNotFound=Plik "%1" nie istnieje. Nie można go odinstalować.
-UninstallOpenError=Plik "%1" nie mógł być otwarty. Nie można odinstalować
-UninstallUnsupportedVer=Ta wersja programu deinstalacyjnego nie rozpoznaje formatu logu deinstalacji. Nie można odinstalować
-UninstallUnknownEntry=W logu deinstalacji wystąpiła nieznana pozycja (%1)
-ConfirmUninstall=Czy na pewno chcesz usunąć program %1 i wszystkie jego składniki?
-UninstallOnlyOnWin64=Ten program moze być odinstalowany tylo w 64 bitowej wersji systemu Windows.
-OnlyAdminCanUninstall=Ta instalacja może być odinstalowana tylko przez użytkownika z prawami administratora.
-UninstallStatusLabel=Poczekaj aż program %1 zostanie usunięty z Twojego komputera.
-UninstalledAll=%1 został usunięty z Twojego komputera.
-UninstalledMost=Odinstalowywanie programu %1 zakończone.%n%nNiektóre elementy nie mogły być usunięte. Możesz je usunąć ręcznie.
-UninstalledAndNeedsRestart=Twój komputer musi być ponownie uruchomiony, aby zakończyć odinstalowywanie %1.%n%nCzy chcesz teraz ponownie uruchomić komputer?
-UninstallDataCorrupted=Plik "%1" jest uszkodzony. Nie można odinstalować
+UninstallNotFound=Plik "%1" nie istnieje. Nie można przeprowadzić dezinstalacji.
+UninstallOpenError=Plik "%1" nie mógł zostać otwarty. Nie można przeprowadzić dezinstalacji.
+UninstallUnsupportedVer=Ta wersja programu dezinstalacyjnego nie rozpoznaje formatu logu dezinstalacji w pliku "%1%". Nie można przeprowadzić dezinstalacji.
+UninstallUnknownEntry=W logu dezinstalacji wystąpiła nieznana pozycja (%1)
+ConfirmUninstall=Czy na pewno chcesz usunąć aplikację %1 i wszystkie jej składniki?
+UninstallOnlyOnWin64=Ta aplikacja może być odinstalowana tylko w 64-bitowej wersji systemu Windows.
+OnlyAdminCanUninstall=Ta instalacja może być odinstalowana tylko przez użytkownika z uprawnieniami administratora.
+UninstallStatusLabel=Poczekaj, aż aplikacja %1 zostanie usunięta z komputera.
+UninstalledAll=Aplikacja %1 została usunięta z komputera.
+UninstalledMost=Dezinstalacja aplikacji %1 zakończyła się.%n%nNiektóre elementy nie mogły zostać usunięte. Należy usunąć je samodzielnie.
+UninstalledAndNeedsRestart=Komputer musi zostać ponownie uruchomiony, aby zakończyć proces dezinstalacji aplikacji %1.%n%nCzy chcesz teraz ponownie uruchomić komputer?
+UninstallDataCorrupted=Plik "%1" jest uszkodzony. Nie można przeprowadzić dezinstalacji.
 
 ; *** Uninstallation phase messages
 ConfirmDeleteSharedFileTitle=Usunąć plik współdzielony?
-ConfirmDeleteSharedFile2=System wykrył, że następujący plik nie jest już używany przez żaden program. Czy chcesz odinstalować ten plik współdzielony?%n%nJeśli inne programy nadal używają tego pliku, a zostanie on usunięty, mogą one przestać działać prawidłowo. Jeśli nie jesteś pewny, wybierz przycisk Nie. Pozostawienie tego pliku w Twoim systemie nie spowoduje żadnych szkód.
+ConfirmDeleteSharedFile2=System wskazuje, iż następujący plik nie jest już używany przez żaden program. Czy chcesz odinstalować ten plik współdzielony?%n%nJeśli inne programy nadal używają tego pliku, a zostanie on usunięty, mogą one przestać działać prawidłowo. W przypadku braku pewności, kliknij przycisk Nie. Pozostawienie tego pliku w systemie nie spowoduje żadnych szkód.
 SharedFileNameLabel=Nazwa pliku:
 SharedFileLocationLabel=Położenie:
-WizardUninstalling=Stan deinstalacji
-StatusUninstalling=Deinstalacja %1...
-
-; *** Shutdown block reasons	
-ShutdownBlockReasonInstallingApp=Intstalacja %1.
-ShutdownBlockReasonUninstallingApp=Dezinstalacja %1.
+WizardUninstalling=Stan dezinstalacji
+StatusUninstalling=Dezinstalacja aplikacji %1...
 
+; *** Shutdown block reasons
+ShutdownBlockReasonInstallingApp=Instalacja aplikacji %1.
+ShutdownBlockReasonUninstallingApp=Dezinstalacja aplikacji %1.
+ 
 ; The custom messages below aren't used by Setup itself, but if you make
 ; use of them in your scripts, you'll want to translate them.
-
+ 
 [CustomMessages]
 
-NameAndVersion=%1 wersja %2
-AdditionalIcons=Dodatkowe ikony:
-CreateDesktopIcon=Utwórz ikonę na &pulpicie
-CreateQuickLaunchIcon=Utwórz ikonę na pasku &szybkiego uruchamiania
-ProgramOnTheWeb=Strona WWW programu %1
-UninstallProgram=Deinstalacja programu %1
-LaunchProgram=Uruchom program %1
-AssocFileExtension=&Przypisz program %1 do rozszerzenia pliku %2
-AssocingFileExtension=Przypisywanie programu %1 do rozszerzenia pliku %2...
+NameAndVersion=%1 (wersja %2)
+AdditionalIcons=Dodatkowe skróty:
+CreateDesktopIcon=Utwórz skrót na &pulpicie
+CreateQuickLaunchIcon=Utwórz skrót na pasku &szybkiego uruchamiania
+ProgramOnTheWeb=Strona internetowa aplikacji %1
+UninstallProgram=Dezinstalacja aplikacji %1
+LaunchProgram=Uruchom aplikację %1
+AssocFileExtension=&Przypisz aplikację %1 do rozszerzenia pliku %2
+AssocingFileExtension=Przypisywanie aplikacji %1 do rozszerzenia pliku %2...
 AutoStartProgramGroupDescription=Autostart:
-AutoStartProgram=Automatycznie uruchamiaj %1
-AddonHostProgramNotFound=%1 nie został znaleziony we wskazanym przez Ciebie folderze.%n%nCzy pomimo tego chcesz kontynuować?
+AutoStartProgram=Automatycznie uruchamiaj aplikację %1
+AddonHostProgramNotFound=Aplikacja %1 nie została znaleziona we wskazanym przez Ciebie folderze.%n%nCzy pomimo tego chcesz kontynuować?

+ 3 - 3
Files/Languages/Unofficial/Farsi.isl

@@ -1,5 +1,5 @@
-; *** Inno Setup version 5.5.3+ English messages ***
-;Translator:Hessam Mohamadi-Improved And Updated
+; *** Inno Setup version 5.5.3+ Farsi messages ***
+;Translator:Hessam Mohamadi
 ;Email:[email protected]
 ; To download user-contributed translations of this file, go to:
 ;   http://www.jrsoftware.org/files/istrans/
@@ -14,7 +14,7 @@
 ; understand the '[LangOptions] section' topic in the help file.
 LanguageName=Farsi
 LanguageID=$0429
-LanguageCodePage=0
+LanguageCodePage=1256
 ; If the language you are translating to requires special font faces or
 ; sizes, uncomment any of the following entries and change them accordingly.
 DialogFontName=Tahoma

+ 0 - 0
ishelp/.gitignore → ISHelp/.gitignore


+ 0 - 0
ishelp/ISHelpGen/.gitignore → ISHelp/ISHelpGen/.gitignore


+ 0 - 0
ishelp/ISHelpGen/ISHelpGen.dpr → ISHelp/ISHelpGen/ISHelpGen.dpr


+ 0 - 0
ishelp/ISHelpGen/ISHelpGen.exe → ISHelp/ISHelpGen/ISHelpGen.exe


+ 0 - 0
ishelp/ISHelpGen/UIsxclassesParser.pas → ISHelp/ISHelpGen/UIsxclassesParser.pas


+ 0 - 0
ishelp/ISHelpGen/XMLParse.pas → ISHelp/ISHelpGen/XMLParse.pas


+ 0 - 0
ishelp/Staging/.gitignore → ISHelp/Staging/.gitignore


+ 0 - 0
ishelp/Staging/contents-template.htm → ISHelp/Staging/contents-template.htm


+ 0 - 0
ishelp/Staging/contents.css → ISHelp/Staging/contents.css


+ 0 - 0
ishelp/Staging/contents.js → ISHelp/Staging/contents.js


+ 0 - 0
ishelp/Staging/hh_isppredirect.xhtm → ISHelp/Staging/hh_isppredirect.xhtm


+ 0 - 0
ishelp/Staging/hh_project.hhp → ISHelp/Staging/hh_project.hhp


+ 0 - 0
ishelp/Staging/images/contentsheadclosed.gif → ISHelp/Staging/images/contentsheadclosed.gif


+ 0 - 0
ishelp/Staging/images/contentsheadopen.gif → ISHelp/Staging/images/contentsheadopen.gif


+ 0 - 0
ishelp/Staging/images/contentstopic.gif → ISHelp/Staging/images/contentstopic.gif


+ 0 - 0
ishelp/Staging/images/extlink.gif → ISHelp/Staging/images/extlink.gif


+ 0 - 0
ishelp/Staging/index.htm → ISHelp/Staging/index.htm


+ 0 - 0
ishelp/Staging/index.php → ISHelp/Staging/index.php


+ 0 - 0
ishelp/Staging/stoplist.stp → ISHelp/Staging/stoplist.stp


+ 0 - 0
ishelp/Staging/styles.css → ISHelp/Staging/styles.css


+ 0 - 0
ishelp/Staging/topic.js → ISHelp/Staging/topic.js


+ 0 - 0
ishelp/compile.bat → ISHelp/compile.bat


+ 0 - 0
ishelp/isetup.dtd → ISHelp/isetup.dtd


+ 42 - 28
ishelp/isetup.xml → ISHelp/isetup.xml

@@ -3,7 +3,7 @@
 
 <!--
   Inno Setup
-  Copyright (C) 1997-2015 Jordan Russell
+  Copyright (C) 1997-2016 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 -->
@@ -85,9 +85,9 @@
 <body>
 
 <p>
-<b>Inno Setup version 5.5.7</b><br/>
-<b>Copyright &copy; 1997-2015 Jordan Russell. All rights reserved.</b><br/>
-<b>Portions Copyright &copy; 2000-2015 Martijn Laan. All rights reserved.</b><br/>
+<b>Inno Setup version 5.5.8</b><br/>
+<b>Copyright &copy; 1997-2016 Jordan Russell. All rights reserved.</b><br/>
+<b>Portions Copyright &copy; 2000-2016 Martijn Laan. All rights reserved.</b><br/>
 <extlink href="http://www.jrsoftware.org/">Inno Setup home page</extlink>
 </p>
 
@@ -124,7 +124,7 @@ Includes integrated support for "deflate", bzip2, and 7-Zip LZMA/LZMA2 file <lin
 
 <li>Support for <link topic="setup_password">passworded</link> and <link topic="setup_encryption">encrypted</link> installs.</li>
 
-<li>Support for <link topic="setup_signtool">digitally signed</link> installs and uninstalls.</li>
+<li>Support for <link topic="setup_signtool">digitally signed</link> installs and uninstalls, including dual signing (SHA1 &amp; SHA256).</li>
 
 <li><link topic="setupcmdline" anchor="SILENT">Silent install</link> and <link topic="uninstcmdline" anchor="SILENT">silent uninstall</link>.</li>
 
@@ -470,38 +470,38 @@ For example: If you used <tt>{src}\MYPROG.EXE</tt> on an entry and the user is i
 
 <dt><b><a name="dotnet20">{dotnet20}</a></b></dt>
 <dd>
-<p>.NET Framework version 2.0 root directory. <tt>{dotnet20}</tt> is equivalent to <tt>{dotnet2032}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit mode</link>, in which case it is equivalent to <tt>{dotnet2064}</tt>.</p>
-<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0 present.</p>
+<p>.NET Framework version 2.0-3.5 root directory. <tt>{dotnet20}</tt> is equivalent to <tt>{dotnet2032}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit mode</link>, in which case it is equivalent to <tt>{dotnet2064}</tt>.</p>
+<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0-3.5 present.</p>
 </dd>
 
 <dt><b><a name="dotnet2032">{dotnet2032}</a></b></dt>
 <dd>
-<p>32-bit .NET Framework version 2.0 root directory.</p>
-<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0 present.</p>
+<p>32-bit .NET Framework version 2.0-3.5 root directory.</p>
+<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0-3.5 present.</p>
 </dd>
 
 <dt><b><a name="dotnet2064">{dotnet2064}</a></b></dt>
 <dd>
-<p>64-bit Windows only: 64-bit .NET Framework version 2.0 root directory.</p>
-<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0 present.</p>
+<p>64-bit Windows only: 64-bit .NET Framework version 2.0-3.5 root directory.</p>
+<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 2.0-3.5 present.</p>
 </dd>
 
 <dt><b><a name="dotnet40">{dotnet40}</a></b></dt>
 <dd>
-<p>.NET Framework version 4.0 root directory. <tt>{dotnet40}</tt> is equivalent to <tt>{dotnet4032}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit mode</link>, in which case it is equivalent to <tt>{dotnet4064}</tt>.</p>
-<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 present.</p>
+<p>.NET Framework version 4.0 and later root directory. <tt>{dotnet40}</tt> is equivalent to <tt>{dotnet4032}</tt> unless the install is running in <link topic="32vs64bitinstalls">64-bit mode</link>, in which case it is equivalent to <tt>{dotnet4064}</tt>.</p>
+<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 or later present.</p>
 </dd>
 
 <dt><b><a name="dotnet4032">{dotnet4032}</a></b></dt>
 <dd>
-<p>32-bit .NET Framework version 4.0 root directory.</p>
-<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 present.</p>
+<p>32-bit .NET Framework version 4.0 and later root directory.</p>
+<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 or later present.</p>
 </dd>
 
 <dt><b><a name="dotnet4064">{dotnet4064}</a></b></dt>
 <dd>
-<p>64-bit Windows only: 64-bit .NET Framework version 2.0 root directory.</p>
-<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 present.</p>
+<p>64-bit Windows only: 64-bit .NET Framework version 4.0 and later root directory.</p>
+<p>An exception will be raised if an attempt is made to expand this constant on a system with no .NET Framework version 4.0 or later present.</p>
 </dd>
 
 </dl>
@@ -2214,7 +2214,8 @@ If <tt>LanguageCodePage</tt> is set to <tt>0</tt>, the language will always be c
 
 <p><link topic="unicode">Unicode Inno Setup</link> <b>LanguageCodePage</b>:<br />
 <tt>LanguageCodePage</tt> specifies the "code page" (character set) needed for the compiler to convert the text in the language's .isl file to Unicode. Note that text in the .iss file such as a [CustomMessages] entry for the language is not converted and should be in Unicode already.<br/>
-If <tt>LanguageCodePage</tt> is set to <tt>0</tt>, the system code page will be used.</p>
+If no code page currently exists for the language, set <tt>LanguageCodePage</tt> to <tt>0</tt>, use a special .islu extension for the language's file, and encode this file as Unicode. Note: this makes your language file unusable by Non Unicode Inno Setup so only do this if really needed. Also note: a <tt>LanguageName</tt> setting in a .islu file does not need to use the special "&lt;nnnn&gt;" encoding mentioned above.<br/>
+If <tt>LanguageCodePage</tt> is set to <tt>0</tt> but no .islu extension is used, the system code page will be used to convert the text in the language's .isl file to Unicode.</p>
 
 <p><b><a name="DialogFontName">DialogFontName</a></b> and <b><a name="DialogFontSize">DialogFontSize</a></b> specify the font name and point size to use in dialogs. If no <tt>DialogFontName</tt> setting is present, then the value of the <link topic="setup_defaultdialogfontname">DefaultDialogFontName</link> [Setup] section directive is used for the font name. If the specified font name does not exist on the user's system or is an empty string, 8-point <i>Microsoft Sans Serif</i> or <i>MS Sans Serif</i> will be substituted.</p>
 
@@ -3094,7 +3095,7 @@ Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; St
 <dd>
 <p>Causes Setup to create a log file in the user's TEMP directory detailing file installation and [Run] actions taken during the installation process. This can be a helpful debugging aid. For example, if you suspect a file isn't being replaced when you believe it should be (or vice versa), the log file will tell you if the file was really skipped, and why.</p>
 <p>The log file is created with a unique name based on the current date. (It will not overwrite or append to existing files.)</p>
-<p>The information contained in the log file is technical in nature and therefore not intended to be understandable by end users. Nor is it designed to be machine-parseable; the format of the file is subject to change without notice.</p>
+<p>The information contained in the log file is technical in nature and therefore not intended to be understandable by end users. Nor is it designed to be machine-parsable; the format of the file is subject to change without notice.</p>
 </dd>
 
 <dt><b><a name="LOG2">/LOG=</a>"<i>filename</i>"</b></dt>
@@ -3361,7 +3362,7 @@ Keep the default set of selected tasks, but deselect the "desktopicon" task:<br/
 <dd>
 <p>Causes Uninstall to create a log file in the user's TEMP directory detailing file uninstallation and [UninstallRun] actions taken during the uninstallation process. This can be a helpful debugging aid.</p>
 <p>The log file is created with a unique name based on the current date. (It will not overwrite or append to existing files.)</p>
-<p>The information contained in the log file is technical in nature and therefore not intended to be understandable by end users. Nor is it designed to be machine-parseable; the format of the file is subject to change without notice.</p>
+<p>The information contained in the log file is technical in nature and therefore not intended to be understandable by end users. Nor is it designed to be machine-parsable; the format of the file is subject to change without notice.</p>
 </dd>
 
 <dt><b><a name="LOG2">/LOG=</a>"<i>filename</i>"</b></dt>
@@ -3865,7 +3866,7 @@ Name: portablemode; Description: "Portable Mode"</pre></example>
 <setupdefault><tt>lzma2/max</tt></setupdefault>
 <body>
 <p>This specifies the method of compression to use on the files, and optionally the level of compression. Higher levels compress better but take longer doing so, and may also require more memory while compressing/decompressing.</p>
-<p><tt>zip</tt> is the method of compression employed by .zip files ("deflate"). It is fast in both compression and decompression, and has very low memory requirements (less than 1 MB for both compression and decompression at level 9), but generally does not compress nearly as well as the other supported methods. <tt>zip</tt>, like <tt>lzma2</tt>, has one special property, though: it will not expand uncompressible data (e.g., files that are already compressed). If a compression level isn't specified, it defaults to 7.</p>
+<p><tt>zip</tt> is the method of compression employed by .zip files ("deflate"). It is fast in both compression and decompression, and has very low memory requirements (less than 1 MB for both compression and decompression at level 9), but generally does not compress nearly as well as the other supported methods. <tt>zip</tt>, like <tt>lzma2</tt>, has one special property, though: it will not expand incompressible data (e.g., files that are already compressed). If a compression level isn't specified, it defaults to 7.</p>
 <p><tt>bzip</tt> is the method of compression employed by the <extlink href="http://www.bzip.org/">bzip2</extlink> compressor. It almost always compresses better than <tt>zip</tt> but is usually slower in both compression and decompression. Up to 4 MB of memory is required during decompression, and up to 8 MB during compression. If a compression level isn't specified, it defaults to 9.</p>
 <p><tt>lzma</tt> is the method of compression employed by the <extlink href="http://www.7-zip.org/">7-Zip LZMA</extlink> compressor. It typically compresses significantly better than the <tt>zip</tt> and <tt>bzip</tt> methods. However, depending on the compression level used, it can be significantly slower at compressing, and consume a <i>lot</i> more memory. The following table summarizes the approximate memory requirements for each of the supported <tt>lzma</tt> compression levels. If a compression level isn't specified, it defaults to <tt>max</tt>.</p>
 <indent>
@@ -3878,7 +3879,7 @@ Name: portablemode; Description: "Portable Mode"</pre></example>
 <tr><td><tt>ultra64</tt> (best)</td><td>64 MB</td><td>676 MB</td></tr>
 </table>
 </indent>
-<p><tt>lzma2</tt> is the method of compression employed by the <extlink href="http://www.7-zip.org/">7-Zip LZMA2</extlink> compressor. LZMA2 is a modified version of LZMA that offers a better compression ratio for uncompressible data (random data expands about 0.005%, compared to 1.35% with original LZMA), and optionally can compress multiple parts of large files in parallel, greatly increasing compression speed but with a possible reduction in compression ratio (see <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link>). Like LZMA, it can consume a <i>lot</i> of memory; see the above table. If a compression level isn't specified, it defaults to <tt>max</tt>.</p>
+<p><tt>lzma2</tt> is the method of compression employed by the <extlink href="http://www.7-zip.org/">7-Zip LZMA2</extlink> compressor. LZMA2 is a modified version of LZMA that offers a better compression ratio for incompressible data (random data expands about 0.005%, compared to 1.35% with original LZMA), and optionally can compress multiple parts of large files in parallel, greatly increasing compression speed but with a possible reduction in compression ratio (see <link topic="setup_lzmanumblockthreads">LZMANumBlockThreads</link>). Like LZMA, it can consume a <i>lot</i> of memory; see the above table. If a compression level isn't specified, it defaults to <tt>max</tt>.</p>
 <p><tt>none</tt> specifies that no compression be used.</p>
 <p><b>See also:</b><br/>
 <link topic="setup_solidcompression">SolidCompression</link><br/>
@@ -4518,7 +4519,7 @@ DiskSliceSize=1457664
 <setupdefault><tt>Output</tt></setupdefault>
 <body>
 <p>Specifies the "output" directory for the script, which is where the Setup Compiler will place the resulting SETUP.* files. By default, it creates a directory named "Output" under the directory containing the script for this.</p>
-<p>If <tt>OutputDir</tt> is not a fully-qualified pathname, it will be treated as being relative to <tt>SourceDir</tt>, unless the pathname is prefixed by "userdocs:", in which case it will be treated as being relative to the the My Documents folder of the currenlty logged-in user. Setting <tt>OutputDir</tt> to <tt>.</tt> will result in the files being placed in the source directory.</p>
+<p>If <tt>OutputDir</tt> is not a fully-qualified pathname, it will be treated as being relative to <tt>SourceDir</tt>, unless the pathname is prefixed by "userdocs:", in which case it will be treated as being relative to the the My Documents folder of the currently logged-in user. Setting <tt>OutputDir</tt> to <tt>.</tt> will result in the files being placed in the source directory.</p>
 <example><pre>OutputDir=c:\output</pre></example>
 </body>
 </setuptopic>
@@ -4888,7 +4889,7 @@ DiskSliceSize=1457664
 <keyword value="digital signature" />
 <keyword value="code signing" />
 <setupvalid><link topic="yesnonotes"><tt>yes</tt> or <tt>no</tt></link></setupvalid>
-<setupdefault><tt>yes</tt> if <link topic="setup_signtool">SignTool</link> is set, <tt>no</tt> otherwise</setupdefault>
+<setupdefault><tt>yes</tt> if a <link topic="setup_signtool">SignTool</link> is set, <tt>no</tt> otherwise</setupdefault>
 <body>
 <p>Specifies whether the uninstaller program (unins???.exe) should be deployed with a digital signature attached. When the uninstaller has a valid digital signature, Windows Vista users will not see an "unidentified program" warning when launching it from outside of Control Panel.</p>
 <p>The first time you compile a script with this directive set to <tt>yes</tt>, a uniquely-named copy of the uninstaller EXE file will be created in the directory specified by the <link topic="setup_signeduninstallerdir">SignedUninstallerDir</link> directive (which defaults to the <link topic="setup_outputdir">output directory</link>). Depending on the <link topic="setup_signtool">SignTool</link> setting, you will either then be prompted to attach a digital signature to this file using an external code-signing tool (such as Microsoft's signtool.exe) or the file will be automatically signed on the fly. On subsequent compiles, the signature from the file will be embedded into the compiled installations' uninstallers.</p>
@@ -4926,22 +4927,35 @@ DiskSliceSize=1457664
 <example>
 <p>Assume the following Sign Tools have been defined in the IDE:</p>
 <pre>
-mystandard=signtool.exe /x /y /d $qMy Program$q $f
+mystandard=signtool.exe sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
 mycustom=signtool.exe $p
 byparam=$p
 </pre>
 <p>then some examples would be:</p>
 <pre>
+[Setup]
 SignTool=mystandard
-SignTool=mycustom /x /y /d $qMy Program$q $f
-SignTool=byparam signtool.exe /x /y /d $qMy Program$q $f
+
+[Setup]
+SignTool=mycustom sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
+
+[Setup]
+SignTool=byparam signtool.exe sign /a /n $qMy Common Name$q /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
+</pre>
+<p>The Setup section may also list multiple SignTool directives which will be executed in order of appearance. This can be used to dual sign (SHA1 &amp; SHA256) Setup and Uninstall:</p>
+<pre>
+[Setup]
+SignTool=mycustom sign /a /n $qMy Common Name$q /fd sha1 /t http://timestamp.comodoca.com/authenticode /d $qMy Program$q $f
+;the /as parameter in the following SignTool requires a recent signtool.exe version and a SHA256 (SHA-2) certificate
+SignTool=mycustom sign /a /n $qMy Common Name$q /as /fd sha256 /td sha256 /tr http://timestamp.comodoca.com/rfc3161 /d $qMy Program$q $f
 </pre>
 <p>Note: for security reasons you should give a unique name to any Sign Tool set to <tt>$p</tt>, and not use a <tt>byparam</tt> name copied from this example. Consider what happens if you #include a third-party file that says:</p>
 <pre>
+[Setup]
 SignTool=byparam format c: 
 </pre>
 </example>
-<p>Details on obtaining signing certificates and using code-signing tools are beyond the scope of this documentation.</p>
+<p>Further details on obtaining signing certificates and using code-signing tools are beyond the scope of this documentation.</p>
 <p><i>Note:</i> If you use a Sign Tool and your Setup contains a large amount of data, it is recommended that you enable <link topic="setup_diskspanning">Disk spanning</link> with <link topic="setup_diskslicesize">DiskSliceSize</link> set to <tt>max</tt>. If you don't do this, the user might experience a long delay after starting Setup caused by Windows verifying the digital signature against all your data. There should be no security reduction from using disk spanning in practice: all files extracted from the unsigned .bin files undergo SHA-1 verification (provided <tt>dontverifychecksum</tt> isn't used). The SHA-1 hashes for this (along with all other metadata) are kept inside Setup's EXE, which is protected by the digital signature.</p>
 <p><b>See also:</b><br/>
 <link topic="setup_signtoolretrycount">SignToolRetryCount</link></p>

+ 0 - 0
ishelp/isfaq.htm → ISHelp/isfaq.htm


+ 1 - 1
ishelp/isx.xml → ISHelp/isx.xml

@@ -560,7 +560,7 @@ external '&lt;dllfunctionname&gt;@&lt;dllfilename&gt; &lt;callingconvention&gt;
 <flaglist>
 
 <flag name="delayload">
-<p>Specifies that the DLL should be delay loaded. Normally the Pascal script checks at startup whether the DLL function can be called and if not, refuses to run. This does not happen if you specify delay loading using 'delayload'. Use delay loading if you want to call a DLL function for which you don't know whether it will actually be available at runtime: if the DLL function can't be called, the Pascal script will still run but throw an expection when you try to call the DLL function which you can catch to handle the absence of the DLL function.</p>
+<p>Specifies that the DLL should be delay loaded. Normally the Pascal script checks at startup whether the DLL function can be called and if not, refuses to run. This does not happen if you specify delay loading using 'delayload'. Use delay loading if you want to call a DLL function for which you don't know whether it will actually be available at runtime: if the DLL function can't be called, the Pascal script will still run but throw an exception when you try to call the DLL function which you can catch to handle the absence of the DLL function.</p>
 </flag>
 
 <flag name="loadwithalteredsearchpath">

+ 0 - 0
ishelp/isxclasses.footer → ISHelp/isxclasses.footer


+ 0 - 0
ishelp/isxclasses.header → ISHelp/isxclasses.header


+ 0 - 0
ishelp/isxclasses.header2 → ISHelp/isxclasses.header2


+ 0 - 0
ishelp/isxclasses.pas → ISHelp/isxclasses.pas


+ 0 - 0
ishelp/isxfunc.xml → ISHelp/isxfunc.xml


+ 0 - 0
ishelp/isxfunc.xsl → ISHelp/isxfunc.xsl


+ 10 - 10
Projects/CompForm.pas

@@ -2,7 +2,7 @@ unit CompForm;
 
 {
   Inno Setup
-  Copyright (C) 1997-2015 Jordan Russell
+  Copyright (C) 1997-2016 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -872,7 +872,7 @@ begin
 
   DebugOutputList.Canvas.Font.Assign(DebugOutputList.Font);
   FDebugLogListTimeWidth := DebugOutputList.Canvas.TextWidth(Format(
-    '[00%s00%s00%s000]   ', [{$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DecimalSeparator]));
+    '[00%s00%s00%s000]   ', [{$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DecimalSeparator]));
   DebugOutputList.ItemHeight := DebugOutputList.Canvas.TextHeight('0');
 
   Application.HintShortPause := 0;
@@ -1422,8 +1422,8 @@ var
   begin
     if FirstLine then begin
       FirstLine := False;
-      Insert(Format('[%.2u%s%.2u%s%.2u%s%.3u]   ', [ST.wHour, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator,
-        ST.wMinute, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator, ST.wSecond, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DecimalSeparator,
+      Insert(Format('[%.2u%s%.2u%s%.2u%s%.3u]   ', [ST.wHour, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator,
+        ST.wMinute, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator, ST.wSecond, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DecimalSeparator,
         ST.wMilliseconds]), S, 1);
       StartsWithTab := False;
     end
@@ -1717,8 +1717,8 @@ begin
     ElapsedTime := GetTickCount - StartTime;
     ElapsedSeconds := ElapsedTime div 1000;
     StatusMessage(Format(SCompilerStatusFinished, [TimeToStr(Time),
-      Format('%.2u%s%.2u%s%.3u', [ElapsedSeconds div 60, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator,
-        ElapsedSeconds mod 60, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DecimalSeparator, ElapsedTime mod 1000])]));
+      Format('%.2u%s%.2u%s%.3u', [ElapsedSeconds div 60, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator,
+        ElapsedSeconds mod 60, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DecimalSeparator, ElapsedTime mod 1000])]));
   finally
     AppData.Lines.Free;
     FCompiling := False;
@@ -2188,8 +2188,8 @@ begin
     String(FCompilerVersion.Version) + SNewLine;
   if FCompilerVersion.Title <> 'Inno Setup' then
     S := S + (SNewLine + 'Based on Inno Setup' + SNewLine);
-  S := S + ('Copyright (C) 1997-2015 Jordan Russell' + SNewLine +
-    'Portions Copyright (C) 2000-2015 Martijn Laan' + SNewLine +
+  S := S + ('Copyright (C) 1997-2016 Jordan Russell' + SNewLine +
+    'Portions Copyright (C) 2000-2016 Martijn Laan' + SNewLine +
     'All rights reserved.' + SNewLine2 +
     'Inno Setup home page:' + SNewLine +
     'http://www.innosetup.com/' + SNewLine2 +
@@ -3857,8 +3857,8 @@ begin
     if ASecondsRemaining >= 0 then
       StatusBar.Panels[spExtraStatus].Text := Format(
         ' Estimated time remaining: %.2d%s%.2d%s%.2d     Average KB/sec: %.0n',
-        [(ASecondsRemaining div 60) div 60, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator,
-         (ASecondsRemaining div 60) mod 60, {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator,
+        [(ASecondsRemaining div 60) div 60, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator,
+         (ASecondsRemaining div 60) mod 60, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator,
          ASecondsRemaining mod 60, ABytesCompressedPerSecond / 1024])
     else
       StatusBar.Panels[spExtraStatus].Text := '';

BIN
Projects/Compil32.res


+ 101 - 86
Projects/Compile.pas

@@ -2,7 +2,7 @@ unit Compile;
 
 {
   Inno Setup
-  Copyright (C) 1997-2015 Jordan Russell
+  Copyright (C) 1997-2016 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -34,7 +34,7 @@ type
 implementation
 
 uses
-  CompPreprocInt, Commctrl, {$IFDEF IS_DXE}VCL.Consts{$ELSE}Consts{$ENDIF}, Classes, IniFiles, TypInfo,
+  CompPreprocInt, Commctrl, {$IFDEF IS_DXE2}Vcl.Consts{$ELSE}Consts{$ENDIF}, Classes, IniFiles, TypInfo,
   PathFunc, CmnFunc2, Struct, Int64Em, CompMsgs, SetupEnt,
   FileClass, Compress, CompressZlib, bzlib, LZMA, ArcFour, SHA1,
   MsgIDs, DebugStruct, VerInfo, ResUpdate, CompResUpdate,
@@ -53,7 +53,7 @@ type
     Data: String;
   end;
 
-  TEnumIniSectionProc = procedure(const Line: PChar; const Ext: Integer) of object;
+  TEnumIniSectionProc = procedure(const Line: PChar; const Ext, Ext2: Integer) of object;
 
   TSetupSectionDirectives = (
     ssAllowCancelDuringInstall,
@@ -345,7 +345,7 @@ type
     DefaultLangData: TLangData;
     {$IFDEF UNICODE} PreLangDataList, {$ENDIF} LangDataList: TList;
     SignToolList: TList;
-    SignTool, SignToolParams: String;
+    SignTools, SignToolsParams: TStringList;
     SignToolRetryCount: Integer;
 
     OutputDir, OutputBaseFilename, OutputManifestFile, SignedUninstallerDir,
@@ -410,7 +410,7 @@ type
     procedure CallIdleProc;
     procedure DoCallback(const Code: Integer; var Data: TCompilerCallbackData);
     procedure EnumIniSection(const EnumProc: TEnumIniSectionProc;
-      const SectionName: String; const Ext: Integer; const Verbose, SkipBlankLines: Boolean;
+      const SectionName: String; const Ext, Ext2: Integer; const Verbose, SkipBlankLines: Boolean;
       const Filename: String; const AnsiLanguageFile, Pre: Boolean);
     function EvalCheckOrInstallIdentifier(Sender: TSimpleExpression; const Name: String;
       const Parameters: array of const): Boolean;
@@ -420,27 +420,27 @@ type
       const AllowedConsts: TAllowedConsts): Boolean;
     procedure CheckCustomMessageDefinitions;
     procedure CheckCustomMessageReferences;
-    procedure EnumTypes(const Line: PChar; const Ext: Integer);
-    procedure EnumComponents(const Line: PChar; const Ext: Integer);
-    procedure EnumTasks(const Line: PChar; const Ext: Integer);
-    procedure EnumDirs(const Line: PChar; const Ext: Integer);
-    procedure EnumIcons(const Line: PChar; const Ext: Integer);
-    procedure EnumINI(const Line: PChar; const Ext: Integer);
+    procedure EnumTypes(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumComponents(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumTasks(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumDirs(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumIcons(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumINI(const Line: PChar; const Ext, Ext2: Integer);
 {$IFDEF UNICODE}
-    procedure EnumLangOptionsPre(const Line: PChar; const Ext: Integer);
+    procedure EnumLangOptionsPre(const Line: PChar; const Ext, Ext2: Integer);
 {$ENDIF}
-    procedure EnumLangOptions(const Line: PChar; const Ext: Integer);
+    procedure EnumLangOptions(const Line: PChar; const Ext, Ext2: Integer);
 {$IFDEF UNICODE}
-    procedure EnumLanguagesPre(const Line: PChar; const Ext: Integer);
+    procedure EnumLanguagesPre(const Line: PChar; const Ext, Ext2: Integer);
 {$ENDIF}
-    procedure EnumLanguages(const Line: PChar; const Ext: Integer);
-    procedure EnumRegistry(const Line: PChar; const Ext: Integer);
-    procedure EnumDelete(const Line: PChar; const Ext: Integer);
-    procedure EnumFiles(const Line: PChar; const Ext: Integer);
-    procedure EnumRun(const Line: PChar; const Ext: Integer);
-    procedure EnumSetup(const Line: PChar; const Ext: Integer);
-    procedure EnumMessages(const Line: PChar; const Ext: Integer);
-    procedure EnumCustomMessages(const Line: PChar; const Ext: Integer);
+    procedure EnumLanguages(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumRegistry(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumDelete(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumFiles(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumRun(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumSetup(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumMessages(const Line: PChar; const Ext, Ext2: Integer);
+    procedure EnumCustomMessages(const Line: PChar; const Ext, Ext2: Integer);
     procedure ExtractParameters(S: PChar; const ParamInfo: array of TParamInfo;
       var ParamValues: array of TParamValue);
     function FindLangEntryIndexByName(const AName: String; const Pre: Boolean): Integer;
@@ -485,7 +485,7 @@ type
     procedure ReadMessagesFromScript;
     function ReadScriptFile(const Filename: String; const UseCache: Boolean;
       const AnsiConvertCodePage: Cardinal): TScriptFileLines;
-    procedure EnumCode(const Line: PChar; const Ext: Integer);
+    procedure EnumCode(const Line: PChar; const Ext, Ext2: Integer);
     procedure ReadCode;
     procedure CodeCompilerOnLineToLineInfo(const Line: LongInt; var Filename: String; var FileLine: LongInt);
     procedure CodeCompilerOnUsedLine(const Filename: String; const Line, Position: LongInt);
@@ -1664,6 +1664,8 @@ begin
 {$ENDIF}
   LangDataList := TLowFragList.Create;
   SignToolList := TLowFragList.Create;
+  SignTools := TStringList.Create;
+  SignToolsParams := TStringList.Create;
   DebugInfo := TMemoryStream.Create;
   CodeDebugInfo := TMemoryStream.Create;
   CodeText := TStringList.Create;
@@ -1678,6 +1680,8 @@ begin
   CodeText.Free;
   CodeDebugInfo.Free;
   DebugInfo.Free;
+  SignToolsParams.Free;
+  SignTools.Free;
   if Assigned(SignToolList) then begin
     for I := 0 to SignToolList.Count-1 do
       TSignTool(SignToolList[I]).Free;
@@ -2252,7 +2256,7 @@ begin
 end;
 
 procedure TSetupCompiler.EnumIniSection(const EnumProc: TEnumIniSectionProc;
-  const SectionName: String; const Ext: Integer; const Verbose, SkipBlankLines: Boolean;
+  const SectionName: String; const Ext, Ext2: Integer; const Verbose, SkipBlankLines: Boolean;
   const Filename: String; const AnsiLanguageFile, Pre: Boolean);
 var
   FoundSection: Boolean;
@@ -2337,7 +2341,7 @@ var
               AddStatus(Format(SCompilerStatusParsingSectionLineFile,
                 [SectionName, LineNumber, ParseFilename]));
           end;
-          EnumProc(PChar(Line.LineText), Ext);
+          EnumProc(PChar(Line.LineText), Ext, Ext2);
         end;
       end;
 
@@ -3391,7 +3395,7 @@ begin
   end;
 end;
 
-procedure TSetupCompiler.EnumSetup(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumSetup(const Line: PChar; const Ext, Ext2: Integer);
 var
   KeyName, Value: String;
   I: Integer;
@@ -3563,6 +3567,7 @@ var
 var
   P: Integer;
   AIncludes: TStringList;
+  SignTool, SignToolParams: String;
 begin
   SeparateDirective(Line, KeyName, Value);
 
@@ -3572,7 +3577,7 @@ begin
   if I = -1 then
     AbortCompileOnLineFmt(SCompilerUnknownDirective, ['Setup', KeyName]);
   Directive := TSetupSectionDirectives(I);
-  if SetupDirectiveLines[Directive] <> 0 then
+  if (Directive <> ssSignTool) and (SetupDirectiveLines[Directive] <> 0) then
     AbortCompileOnLineFmt(SCompilerEntryAlreadySpecified, ['Setup', KeyName]);
   SetupDirectiveLines[Directive] := LineNumber;
   case Directive of
@@ -4072,6 +4077,8 @@ begin
         end;
         if FindSignToolIndexByName(SignTool) = -1 then
           Invalid;
+        SignTools.Add(SignTool);
+        SignToolsParams.Add(SignToolParams);
       end;
     ssSignToolRetryCount: begin
         I := StrToIntDef(Value, -1);
@@ -4294,7 +4301,7 @@ begin
 end;
 
 {$IFDEF UNICODE}
-procedure TSetupCompiler.EnumLangOptionsPre(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumLangOptionsPre(const Line: PChar; const Ext, Ext2: Integer);
 
   procedure ApplyToLangEntryPre(const KeyName, Value: String;
     const PreLangData: TPreLangData; const AffectsMultipleLangs: Boolean);
@@ -4348,10 +4355,10 @@ begin
 end;
 {$ENDIF}
 
-procedure TSetupCompiler.EnumLangOptions(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumLangOptions(const Line: PChar; const Ext, Ext2: Integer);
 
   procedure ApplyToLangEntry(const KeyName, Value: String;
-    var LangOptions: TSetupLanguageEntry; const AffectsMultipleLangs: Boolean);
+    var LangOptions: TSetupLanguageEntry; const AffectsMultipleLangs, AnsiLanguageFile: Boolean);
   var
     I: Integer;
     Directive: TLangOptionsSectionDirectives;
@@ -4394,7 +4401,7 @@ procedure TSetupCompiler.EnumLangOptions(const Line: PChar; const Ext: Integer);
           Inc(I, 6);
         end
         else begin
-          if (N[I] > #126) and not AsciiWarningShown then begin
+          if AnsiLanguageFile and (N[I] > #126) and not AsciiWarningShown then begin
             WarningsList.Add(SCompilerLanguageNameNotAscii);
             AsciiWarningShown := True;
           end;
@@ -4465,18 +4472,20 @@ procedure TSetupCompiler.EnumLangOptions(const Line: PChar; const Ext: Integer);
 var
   KeyName, Value: String;
   I, LangIndex: Integer;
+  AnsiLanguageFile: Boolean;
 begin
   SeparateDirective(Line, KeyName, Value);
   LangIndex := ExtractLangIndex(Self, KeyName, Ext, False);
+  AnsiLanguageFile := Boolean(Ext2);
   if LangIndex = -1 then begin
     for I := 0 to LanguageEntries.Count-1 do
       ApplyToLangEntry(KeyName, Value, PSetupLanguageEntry(LanguageEntries[I])^,
-        LanguageEntries.Count > 1);
+        LanguageEntries.Count > 1, AnsiLanguageFile);
   end else
-    ApplyToLangEntry(KeyName, Value, PSetupLanguageEntry(LanguageEntries[LangIndex])^, False);
+    ApplyToLangEntry(KeyName, Value, PSetupLanguageEntry(LanguageEntries[LangIndex])^, False, AnsiLanguageFile);
 end;
 
-procedure TSetupCompiler.EnumTypes(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumTypes(const Line: PChar; const Ext, Ext2: Integer);
 
   function IsCustomTypeAlreadyDefined: Boolean;
   var
@@ -4551,7 +4560,7 @@ begin
   TypeEntries.Add(NewTypeEntry);
 end;
 
-procedure TSetupCompiler.EnumComponents(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumComponents(const Line: PChar; const Ext, Ext2: Integer);
 type
   TParam = (paFlags, paName, paDescription, paExtraDiskSpaceRequired, paTypes,
     paLanguages, paCheck, paMinVersion, paOnlyBelowVersion);
@@ -4655,7 +4664,7 @@ begin
   ComponentEntries.Add(NewComponentEntry);
 end;
 
-procedure TSetupCompiler.EnumTasks(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumTasks(const Line: PChar; const Ext, Ext2: Integer);
 type
   TParam = (paFlags, paName, paDescription, paGroupDescription, paComponents,
     paLanguages, paCheck, paMinVersion, paOnlyBelowVersion);
@@ -4745,7 +4754,7 @@ end;
 const
   FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $00002000;
 
-procedure TSetupCompiler.EnumDirs(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumDirs(const Line: PChar; const Ext, Ext2: Integer);
 type
   TParam = (paFlags, paName, paAttribs, paPermissions, paComponents, paTasks,
     paLanguages, paCheck, paBeforeInstall, paAfterInstall, paMinVersion,
@@ -4884,7 +4893,7 @@ const
     SmkcDown, SmkcIns, SmkcDel, SmkcShift, SmkcCtrl, SmkcAlt);
 {$ENDIF}
 
-procedure TSetupCompiler.EnumIcons(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumIcons(const Line: PChar; const Ext, Ext2: Integer);
 
   {$IFNDEF Delphi3OrHigher}
   procedure LoadStrings;
@@ -5128,7 +5137,7 @@ begin
   IconEntries.Add(NewIconEntry);
 end;
 
-procedure TSetupCompiler.EnumINI(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumINI(const Line: PChar; const Ext, Ext2: Integer);
 type
   TParam = (paFlags, paFilename, paSection, paKey, paString, paComponents,
     paTasks, paLanguages, paCheck, paBeforeInstall, paAfterInstall,
@@ -5227,7 +5236,7 @@ begin
   IniEntries.Add(NewIniEntry);
 end;
 
-procedure TSetupCompiler.EnumRegistry(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumRegistry(const Line: PChar; const Ext, Ext2: Integer);
 type
   TParam = (paFlags, paRoot, paSubkey, paValueType, paValueName, paValueData,
     paPermissions, paComponents, paTasks, paLanguages, paCheck, paBeforeInstall,
@@ -5500,7 +5509,7 @@ begin
   RegistryEntries.Add(NewRegistryEntry);
 end;
 
-procedure TSetupCompiler.EnumDelete(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumDelete(const Line: PChar; const Ext, Ext2: Integer);
 type
   TParam = (paType, paName, paComponents, paTasks, paLanguages, paCheck,
     paBeforeInstall, paAfterInstall, paMinVersion, paOnlyBelowVersion);
@@ -5577,7 +5586,7 @@ begin
   end;
 end;
 
-procedure TSetupCompiler.EnumFiles(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumFiles(const Line: PChar; const Ext, Ext2: Integer);
 
   function EscapeBraces(const S: String): String;
   { Changes all '{' to '{{' }
@@ -6484,7 +6493,7 @@ begin
   SetFileTime(H, nil, nil, @FT);
 end;
 
-procedure TSetupCompiler.EnumRun(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumRun(const Line: PChar; const Ext, Ext2: Integer);
 type
   TParam = (paFlags, paFilename, paParameters, paWorkingDir, paRunOnceId,
     paDescription, paStatusMsg, paVerb, paComponents, paTasks, paLanguages,
@@ -6704,7 +6713,7 @@ const
     (Name: ParamLanguagesInfoAfterFile; Flags: [piNoEmpty]));
 
 {$IFDEF UNICODE}
-procedure TSetupCompiler.EnumLanguagesPre(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumLanguagesPre(const Line: PChar; const Ext, Ext2: Integer);
 var
   Values: array[TLanguagesParam] of TParamValue;
   NewPreLangData: TPreLangData;
@@ -6736,7 +6745,7 @@ begin
 end;
 {$ENDIF}
 
-procedure TSetupCompiler.EnumLanguages(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumLanguages(const Line: PChar; const Ext, Ext2: Integer);
 var
   Values: array[TLanguagesParam] of TParamValue;
   NewLanguageEntry: PSetupLanguageEntry;
@@ -6793,7 +6802,7 @@ begin
   ReadMessagesFromFiles(Filename, LanguageEntries.Count-1);
 end;
 
-procedure TSetupCompiler.EnumMessages(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumMessages(const Line: PChar; const Ext, Ext2: Integer);
 var
   P, P2: PChar;
   I, ID, LangIndex: Integer;
@@ -6842,7 +6851,7 @@ begin
   end;
 end;
 
-procedure TSetupCompiler.EnumCustomMessages(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumCustomMessages(const Line: PChar; const Ext, Ext2: Integer);
 
   function ExpandNewlines(const S: String): String;
   { Replaces '%n' with #13#10 }
@@ -7026,7 +7035,7 @@ begin
     Filename := PathExpand(PrependSourceDirName(Filename));
     AnsiLanguageFile := CompareText(PathExtractExt(Filename), '.islu') <> 0;
     AddStatus(Format(SCompilerStatusReadingInFile, [Filename]));
-    EnumIniSection(EnumLangOptionsPre, 'LangOptions', ALangIndex, False, True, Filename, AnsiLanguageFile, True);
+    EnumIniSection(EnumLangOptionsPre, 'LangOptions', ALangIndex, 0, False, True, Filename, AnsiLanguageFile, True);
     CallIdleProc;
   end;
 end;
@@ -7046,11 +7055,11 @@ begin
     Filename := PathExpand(PrependSourceDirName(Filename));
     AnsiLanguageFile := CompareText(PathExtractExt(Filename), '.islu') <> 0;
     AddStatus(Format(SCompilerStatusReadingInFile, [Filename]));
-    EnumIniSection(EnumLangOptions, 'LangOptions', ALangIndex, False, True, Filename, AnsiLanguageFile, False);
+    EnumIniSection(EnumLangOptions, 'LangOptions', ALangIndex, Integer(AnsiLanguageFile), False, True, Filename, AnsiLanguageFile, False);
     CallIdleProc;
-    EnumIniSection(EnumMessages, 'Messages', ALangIndex, False, True, Filename, AnsiLanguageFile, False);
+    EnumIniSection(EnumMessages, 'Messages', ALangIndex, 0, False, True, Filename, AnsiLanguageFile, False);
     CallIdleProc;
-    EnumIniSection(EnumCustomMessages, 'CustomMessages', ALangIndex, False, True, Filename, AnsiLanguageFile, False);
+    EnumIniSection(EnumCustomMessages, 'CustomMessages', ALangIndex, 0, False, True, Filename, AnsiLanguageFile, False);
     CallIdleProc;
   end;
 end;
@@ -7060,7 +7069,7 @@ var
   J: TSetupMessageID;
 begin
   { Read messages from Default.isl into DefaultLangData }
-  EnumIniSection(EnumMessages, 'Messages', -2, False, True, 'compiler:Default.isl', True, False);
+  EnumIniSection(EnumMessages, 'Messages', -2, 0, False, True, 'compiler:Default.isl', True, False);
   CallIdleProc;
 
   { Check for missing messages in Default.isl }
@@ -7102,7 +7111,7 @@ begin
 
   { Then read the [LangOptions] section in the script }
   AddStatus(SCompilerStatusReadingInScriptMsgs);
-  EnumIniSection(EnumLangOptionspre, 'LangOptions', -1, False, True, '', False, True);
+  EnumIniSection(EnumLangOptionspre, 'LangOptions', -1, 0, False, True, '', False, True);
   CallIdleProc;
 end;
 {$ENDIF}
@@ -7146,11 +7155,11 @@ begin
 
   { Then read the [LangOptions] & [Messages] & [CustomMessages] sections in the script }
   AddStatus(SCompilerStatusReadingInScriptMsgs);
-  EnumIniSection(EnumLangOptions, 'LangOptions', -1, False, True, '', False, False);
+  EnumIniSection(EnumLangOptions, 'LangOptions', -1, 0, False, True, '', False, False);
   CallIdleProc;
-  EnumIniSection(EnumMessages, 'Messages', -1, False, True, '', False, False);
+  EnumIniSection(EnumMessages, 'Messages', -1, 0, False, True, '', False, False);
   CallIdleProc;
-  EnumIniSection(EnumCustomMessages, 'CustomMessages', -1, False, True, '', False, False);
+  EnumIniSection(EnumCustomMessages, 'CustomMessages', -1, 0, False, True, '', False, False);
   CallIdleProc;
 
   { Check for missing messages }
@@ -7213,7 +7222,7 @@ begin
   end;
 end;
 
-procedure TSetupCompiler.EnumCode(const Line: PChar; const Ext: Integer);
+procedure TSetupCompiler.EnumCode(const Line: PChar; const Ext, Ext2: Integer);
 var
   CodeTextLineInfo: TLineInfo;
 begin
@@ -7227,7 +7236,7 @@ procedure TSetupCompiler.ReadCode;
 begin
   { Read [Code] section }
   AddStatus(SCompilerStatusReadingCode);
-  EnumIniSection(EnumCode, 'Code', 0, False, False, '', False, False);
+  EnumIniSection(EnumCode, 'Code', 0, 0, False, False, '', False, False);
   CallIdleProc;
 end;
 
@@ -8056,6 +8065,7 @@ var
     F: TFile;
     LastError: DWORD;
     SignToolIndex: Integer;
+    I: Integer;
   begin
     UnsignedFileSize := UnsignedFile.CappedSize;
 
@@ -8063,8 +8073,7 @@ var
     ModeID := SetupExeModeUninstaller;
     UnsignedFile.WriteBuffer(ModeID, SizeOf(ModeID));
 
-    SignToolIndex := FindSignToolIndexByName(SignTool);
-    if SignToolIndex <> -1 then begin
+    if SignTools.Count > 0 then begin
       Filename := SignedUninstallerDir + 'uninst.e32.tmp';
 
       F := TFile.Create(Filename, fdCreateAlways, faWrite, fsNone);
@@ -8075,7 +8084,10 @@ var
       end;
 
       try
-        Sign(TSignTool(SignToolList[SignToolIndex]).Command, SignToolParams, Filename, SignToolRetryCount);
+        for I := 0 to SignTools.Count - 1 do begin
+          SignToolIndex := FindSignToolIndexByName(SignTools[I]); //can't fail, already checked
+          Sign(TSignTool(SignToolList[SignToolIndex]).Command, SignToolsParams[I], Filename, SignToolRetryCount);
+        end;
         if not InternalSignSetupE32(Filename, UnsignedFile, UnsignedFileSize,
            SCompilerSignedFileContentsMismatch) then
           AbortCompile(SCompilerSignToolSucceededButNoSignature);
@@ -8338,13 +8350,12 @@ begin
     WizardImageFile := 'compiler:WIZMODERNIMAGE.BMP';
     WizardSmallImageFile := 'compiler:WIZMODERNSMALLIMAGE.BMP';
     DefaultDialogFontName := 'Tahoma';
-    SignTool := '';
     SignToolRetryCount := 2;
     SetupHeader.CloseApplicationsFilter := '*.exe,*.dll,*.chm';
     SetupHeader.WizardImageAlphaFormat := afIgnored;
 
     { Read [Setup] section }
-    EnumIniSection(EnumSetup, 'Setup', 0, True, True, '', False, False);
+    EnumIniSection(EnumSetup, 'Setup', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Verify settings set in [Setup] section }
@@ -8486,10 +8497,10 @@ begin
       LineNumber := SetupDirectiveLines[ssEncryption];
       AbortCompileFmt(SCompilerEntryMissing2, ['Setup', 'Password']);
     end;
-    if (SetupDirectiveLines[ssSignedUninstaller] = 0) and (SignTool <> '') then
+    if (SetupDirectiveLines[ssSignedUninstaller] = 0) and (SignTools.Count > 0) then
       Include(SetupHeader.Options, shSignedUninstaller);
     if not UseSetupLdr and
-       ((SignTool <> '') or (shSignedUninstaller in SetupHeader.Options)) then
+       ((SignTools.Count > 0) or (shSignedUninstaller in SetupHeader.Options)) then
       AbortCompile(SCompilerNoSetupLdrSignError);
     LineNumber := SetupDirectiveLines[ssCreateUninstallRegKey];
     CheckCheckOrInstall('CreateUninstallRegKey', SetupHeader.CreateUninstallRegKey, cikDirectiveCheck);
@@ -8662,7 +8673,7 @@ begin
 
     { 0.1. Read [Languages] section and [LangOptions] in the .isl files the
       entries reference }
-    EnumIniSection(EnumLanguagesPre, 'Languages', 0, True, True, '', False, True);
+    EnumIniSection(EnumLanguagesPre, 'Languages', 0, 0, True, True, '', False, True);
     CallIdleProc;
 
     { 0.2. Read [LangOptions] in the script }
@@ -8674,7 +8685,7 @@ begin
     ReadDefaultMessages;
 
     { 2. Read [Languages] section and the .isl files the entries reference }
-    EnumIniSection(EnumLanguages, 'Languages', 0, True, True, '', False, False);
+    EnumIniSection(EnumLanguages, 'Languages', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { 3. Read [LangOptions] & [Messages] & [CustomMessages] in the script }
@@ -8689,53 +8700,53 @@ begin
     ReadCode;
 
     { Read [Types] section }
-    EnumIniSection(EnumTypes, 'Types', 0, True, True, '', False, False);
+    EnumIniSection(EnumTypes, 'Types', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [Components] section }
-    EnumIniSection(EnumComponents, 'Components', 0, True, True, '', False, False);
+    EnumIniSection(EnumComponents, 'Components', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [Tasks] section }
-    EnumIniSection(EnumTasks, 'Tasks', 0, True, True, '', False, False);
+    EnumIniSection(EnumTasks, 'Tasks', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [Dirs] section }
-    EnumIniSection(EnumDirs, 'Dirs', 0, True, True, '', False, False);
+    EnumIniSection(EnumDirs, 'Dirs', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [Icons] section }
-    EnumIniSection(EnumIcons, 'Icons', 0, True, True, '', False, False);
+    EnumIniSection(EnumIcons, 'Icons', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [INI] section }
-    EnumIniSection(EnumINI, 'INI', 0, True, True, '', False, False);
+    EnumIniSection(EnumINI, 'INI', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [Registry] section }
-    EnumIniSection(EnumRegistry, 'Registry', 0, True, True, '', False, False);
+    EnumIniSection(EnumRegistry, 'Registry', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [InstallDelete] section }
-    EnumIniSection(EnumDelete, 'InstallDelete', 0, True, True, '', False, False);
+    EnumIniSection(EnumDelete, 'InstallDelete', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [UninstallDelete] section }
-    EnumIniSection(EnumDelete, 'UninstallDelete', 1, True, True, '', False, False);
+    EnumIniSection(EnumDelete, 'UninstallDelete', 1, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [Run] section }
-    EnumIniSection(EnumRun, 'Run', 0, True, True, '', False, False);
+    EnumIniSection(EnumRun, 'Run', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [UninstallRun] section }
-    EnumIniSection(EnumRun, 'UninstallRun', 1, True, True, '', False, False);
+    EnumIniSection(EnumRun, 'UninstallRun', 1, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read [Files] section }
     if not TryStrToBoolean(SetupHeader.Uninstallable, Uninstallable) or Uninstallable then
-      EnumFiles('', 1);
-    EnumIniSection(EnumFiles, 'Files', 0, True, True, '', False, False);
+      EnumFiles('', 1, 0);
+    EnumIniSection(EnumFiles, 'Files', 0, 0, True, True, '', False, False);
     CallIdleProc;
 
     { Read decompressor DLL. Must be done after [Files] is parsed, since
@@ -8894,10 +8905,14 @@ begin
         end;
 
         { Sign }
-        SignToolIndex := FindSignToolIndexByName(SignTool);
-        if SignToolIndex <> -1 then begin
-          AddStatus(SCompilerStatusSigningSetup);
-          Sign(TSignTool(SignToolList[SignToolIndex]).Command, SignToolParams, ExeFilename, SignToolRetryCount);
+        if SignTools.Count > 0 then begin
+          for I := 0 to SignTools.Count - 1 do begin
+            SignToolIndex := FindSignToolIndexByName(SignTools[I]); //can't fail, already checked
+            if SignToolIndex <> -1 then begin
+              AddStatus(SCompilerStatusSigningSetup);
+              Sign(TSignTool(SignToolList[SignToolIndex]).Command, SignToolsParams[I], ExeFilename, SignToolRetryCount);
+            end;
+          end;
         end;
       except
         EmptyOutputDir(False);
@@ -8923,8 +8938,8 @@ begin
     AddStatus('');
     for I := 0 to WarningsList.Count-1 do
       AddStatus(SCompilerStatusWarning + WarningsList[I]);
-    asm jmp @1; db 0,'Inno Setup Compiler, Copyright (C) 1997-2015 Jordan Russell, '
-                  db 'Portions Copyright (C) 2000-2015 Martijn Laan',0; @1: end;
+    asm jmp @1; db 0,'Inno Setup Compiler, Copyright (C) 1997-2016 Jordan Russell, '
+                  db 'Portions Copyright (C) 2000-2016 Martijn Laan',0; @1: end;
     { Note: Removing or modifying the copyright text is a violation of the
       Inno Setup license agreement; see LICENSE.TXT. }
   finally

+ 0 - 0
Projects/Iscc.dof → Projects/ISCC.dof


+ 37 - 25
Projects/ISCC.dpr

@@ -3,7 +3,7 @@ program ISCC;
 
 {
   Inno Setup
-  Copyright (C) 1997-2015 Jordan Russell
+  Copyright (C) 1997-2016 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -48,12 +48,12 @@ type
 var
   StdOutHandle, StdErrHandle: THandle;
   ScriptFilename: String;
-  IncludePath, Definitions, Output, OutputPath, OutputFilename, SignTool: String;
+  IncludePath, Definitions, Output, OutputPath, OutputFilename: String;
+  SignTools: TStringList;
   ScriptLines, NextScriptLine: PScriptLine;
   CurLine: String;
   StartTime, EndTime: DWORD;
   Quiet, ShowProgress, WantAbort: Boolean;
-  SignTools: TStringList;
   ProgressPoint: TPoint;
   LastProgress: String;
   IsppOptions: TIsppOptions;
@@ -341,8 +341,8 @@ procedure ProcessCommandLine;
   procedure ShowBanner;
   begin
     WriteStdOut('Inno Setup 5 Command-Line Compiler');
-    WriteStdOut('Copyright (C) 1997-2015 Jordan Russell. All rights reserved.');
-    WriteStdOut('Portions Copyright (C) 2000-2015 Martijn Laan');
+    WriteStdOut('Copyright (C) 1997-2016 Jordan Russell. All rights reserved.');
+    WriteStdOut('Portions Copyright (C) 2000-2016 Martijn Laan');
     if IsppMode then begin
       WriteStdOut('Inno Setup Preprocessor');
       WriteStdOut('Copyright (C) 2001-2004 Alex Yackimoff. All rights reserved.');
@@ -404,12 +404,12 @@ begin
       else if GetParam(S, 'F') then
         OutputFilename := S
       else if GetParam(S, 'S') then begin
-        SignTool := S;
-        if Pos('=', SignTool) = 0 then begin
+        if Pos('=', S) = 0 then begin
           ShowBanner;
           WriteStdErr('Invalid option: ' + S);
           Halt(1);
         end;
+        SignTools.Add(S);
       end else if IsppMode and GetParam(S, 'D') then begin
         if (Pos(';', S) > 0) or (Pos(' ', S) > 0) then
           S := AddQuotes(S);
@@ -502,6 +502,7 @@ var
   Options: String;
   Res: Integer;
   I: Integer;
+  IDESignTools: TStringList;
 begin
   if ScriptFilename <> '-' then begin
     ScriptFilename := PathExpand(ScriptFilename);
@@ -524,7 +525,6 @@ begin
     Halt(1);
   end;
 
-  SignTools := TStringList.Create;
   ProgressPoint.X := -1;
   ExitCode := 0;
   try
@@ -555,12 +555,20 @@ begin
     if OutputFilename <> '' then
       AppendOption(Options, 'OutputBaseFilename', OutputFilename);
 
-    ReadSignTools(SignTools);
     for I := 0 to SignTools.Count-1 do
-      if (SignTool = '') or (Pos(UpperCase(SignTools.Names[I]) + '=', UpperCase(SignTool)) = 0) then
-        Options := Options + AddSignToolParam(SignTools[I]);
-    if SignTool <> '' then
-      Options := Options + AddSignToolParam(SignTool);
+      Options := Options + AddSignToolParam(SignTools[I]);
+
+    IDESignTools := TStringList.Create;
+    try
+      { Also automatically read and add SignTools defined using the IDE. Adding
+        these after the command line SignTools so that the latter are always
+        found first by the compiler. }
+      ReadSignTools(IDESignTools);
+      for I := 0 to IDESignTools.Count-1 do
+        Options := Options + AddSignToolParam(IDESignTools[I]);
+    finally
+      IDESignTools.Free;
+    end;
 
     if IsppMode then
       IsppOptionsToString(Options, IsppOptions, Definitions, IncludePath);
@@ -585,7 +593,6 @@ begin
         'unexpected result (%d).', [Res]));
     end;
   finally
-    SignTools.Free;
     FreeScriptLines;
   end;
   if ExitCode <> 0 then
@@ -593,17 +600,22 @@ begin
 end;
 
 begin
-  StdOutHandle := GetStdHandle(STD_OUTPUT_HANDLE);
-  StdErrHandle := GetStdHandle(STD_ERROR_HANDLE);
-  SetConsoleCtrlHandler(@ConsoleCtrlHandler, True);
+  SignTools := TStringList.Create;
   try
-    IsppMode := FileExists(ExtractFilePath(NewParamStr(0)) + 'ispp.dll');
-    ProcessCommandLine;
-    Go;
-  except
-    { Show a friendlier exception message. (By default, Delphi prints out
-      the exception class and address.) }
-    WriteStdErr(GetExceptMessage);
-    Halt(2);
+    StdOutHandle := GetStdHandle(STD_OUTPUT_HANDLE);
+    StdErrHandle := GetStdHandle(STD_ERROR_HANDLE);
+    SetConsoleCtrlHandler(@ConsoleCtrlHandler, True);
+    try
+      IsppMode := FileExists(ExtractFilePath(NewParamStr(0)) + 'ispp.dll');
+      ProcessCommandLine;
+      Go;
+    except
+      { Show a friendlier exception message. (By default, Delphi prints out
+        the exception class and address.) }
+      WriteStdErr(GetExceptMessage);
+      Halt(2);
+    end;
+  finally
+    SignTools.Free;
   end;
 end.

BIN
Projects/Iscc.res → Projects/ISCC.res


+ 0 - 0
Projects/Iscmplr.dof → Projects/ISCmplr.dof


BIN
Projects/Iscmplr.res → Projects/ISCmplr.res


+ 13 - 1
Projects/ISPP/Help/ispp.xml

@@ -573,7 +573,7 @@
 					</define>
 				</syntax>
 				<description>
-					<para>&pragma; is a special directive. Please note that if ISPP fails to parse parameters of this directive (because of typo or wrong sytax), no error will occur &dash; only a warning will be issued; this is done for compatibility with other preprocessors, which can have their own sytax of &pragma; directive.</para>
+					<para>&pragma; is a special directive. Please note that if ISPP fails to parse parameters of this directive (because of typo or wrong syntax), no error will occur &dash; only a warning will be issued; this is done for compatibility with other preprocessors, which can have their own syntax of &pragma; directive.</para>
 					<para>First syntax of &pragma; directive controls the options, which ISPP uses to read the source. There are two groups of options. Each group consists of 26 flags (not all of them are meaningful and used by ISPP, though). Each flag has an assigned latin letter. You specify options by typing group name (<synel>option</synel> or <synel>parseroption</synel>),
 then the letter following the dash. After a letter a plus or minus sign shall be specified. Plus sign to turn the option on, minus to turn it off. Unrestricted number of options can be specified at once (see syntax).
 The list of options is provided at the end of this topic.</para>
@@ -1405,6 +1405,18 @@ The list of options is provided at the end of this topic.</para>
 				</section>
 				<description>
 					<para>Changes the extension in FileName with NewExt. NewExt must not contain period.</para>
+          <para>Declared in &builtins;.</para>
+				</description>
+			</topic>
+			<topic id="RemoveFileExt">
+				<title>RemoveFileExt</title>
+				<section title="RemoveFileExt">
+					<pre>
+						<line>#define RemoveFileExt(str FileName)</line>
+					</pre>
+				</section>
+				<description>
+					<para>Removes the extension in FileName.</para>
           <para>Declared in &builtins;.</para>
 				</description>
 			</topic>

BIN
Projects/ISPP/ISPP.res


+ 0 - 352
Projects/ISPP/ISPPBuiltins.iss

@@ -1,352 +0,0 @@
-; BEGIN ISPPBUILTINS.ISS
-//
-// Inno Setup Preprocessor 5
-//
-// Copyright (C) 2001-2004 Alex Yackimoff. All Rights Reserved.
-// Portions by Martijn Laan.
-// http://ispp.sourceforge.net
-//
-// Inno Setup (C) 1997-2009 Jordan Russell. All Rights Reserved.
-// Portions by Martijn Laan.
-//
-// $Id: ISPPBuiltins.iss,v 1.3 2010/12/29 15:20:26 mlaan Exp $
-//
-#if defined(ISPP_INVOKED) && !defined(_BUILTINS_ISS_)
-//
-#if PREPROCVER < 0x01000000
-# error Inno Setup Preprocessor version is outdated
-#endif
-//
-#define _BUILTINS_ISS_
-//
-// ===========================================================================
-//
-// Default states for options.
-//
-//#pragma parseroption -b+ ; short circuit boolean evaluation: on
-//#pragma parseroption -m- ; short circuit multiplication evaluation (0 * A will not eval A): off
-//#pragma parseroption -p+ ; string literals without escape sequences: on
-//#pragma parseroption -u- ; allow undeclared identifiers: off
-//#pragma option -c+       ; pass script to the compiler: on
-//#pragma option -e-       ; emit empty lines to translation: off
-//#pragma option -v-       ; verbose mode: off
-//
-// ---------------------------------------------------------------------------
-//
-// Verbose levels:
-// 0 - #include and #file acknowledgements
-// 1 - information about any temp files created by #file
-// 2 - #insert and #append acknowledgements
-// 3 - reserved
-// 4 - #dim, #define and #undef acknowledgements
-// 5 - reserved
-// 6 - conditional inclusion acknowledgements
-// 7 - reserved
-// 8 - show strings emitted with #emit directive
-// 9 - macro and functions successfull call acknowledgements
-//10 - Local macro array allocation acknowledgements
-//
-//#pragma verboselevel 0
-//
-#ifndef __POPT_P__
-# define private CStrings
-# pragma parseroption -p+
-#endif
-//
-#pragma spansymbol "\"
-//
-#define True               1
-#define False              0
-#define Yes                True
-#define No								 False
-//
-#define MaxInt             0x7FFFFFFFL
-#define MinInt             0x80000000L
-//
-#define NULL
-#define void
-//
-// TypeOf constants
-//
-#define TYPE_ERROR         0
-#define TYPE_NULL          1
-#define TYPE_INTEGER       2
-#define TYPE_STRING        3
-#define TYPE_MACRO         4
-#define TYPE_FUNC          5
-#define TYPE_ARRAY         6
-//
-// Helper macro to find out the type of an array element or expression. TypeOf
-// standard function only allows identifier as its parameter. Use this macro
-// to convert an expression to identifier.
-//
-#define TypeOf2(any Expr) TypeOf(Expr)
-//
-// ReadReg constants
-//
-#define HKEY_CLASSES_ROOT  0x80000000UL
-#define HKEY_CURRENT_USER  0x80000001UL
-#define HKEY_LOCAL_MACHINE 0x80000002UL
-#define HKEY_USERS         0x80000003UL
-//
-#define HKCR               HKEY_CLASSES_ROOT
-#define HKCU               HKEY_CURRENT_USER
-#define HKLM               HKEY_LOCAL_MACHINE
-#define HKU                HKEY_USERS
-//
-// Exec constants
-//
-#define SW_HIDE            0
-#define SW_SHOWNORMAL      1
-#define SW_NORMAL          1
-#define SW_SHOWMINIMIZED   2
-#define SW_SHOWMAXIMIZED   3
-#define SW_MAXIMIZE        3
-#define SW_SHOWNOACTIVATE  4
-#define SW_SHOW            5
-#define SW_MINIMIZE        6
-#define SW_SHOWMINNOACTIVE 7
-#define SW_SHOWNA          8
-#define SW_RESTORE         9
-#define SW_SHOWDEFAULT     10
-#define SW_MAX             10
-//
-// Find constants
-//
-#define FIND_MATCH         0x00
-#define FIND_BEGINS        0x01
-#define FIND_ENDS          0x02
-#define FIND_CONTAINS      0x03
-#define FIND_CASESENSITIVE 0x04 
-#define FIND_SENSITIVE     FIND_CASESENSITIVE
-#define FIND_AND           0x00
-#define FIND_OR            0x08
-#define FIND_NOT           0x10
-#define FIND_TRIM          0x20
-//
-// FindFirst constants
-//
-#define faReadOnly         0x00000001
-#define faHidden           0x00000002
-#define faSysFile          0x00000004
-#define faVolumeID         0x00000008
-#define faDirectory        0x00000010
-#define faArchive          0x00000020
-#define faSymLink          0x00000040
-#define faAnyFile          0x0000003F
-//
-// GetStringFileInfo standard names
-//
-#define COMPANY_NAME       "CompanyName"
-#define FILE_DESCRIPTION   "FileDescription"
-#define FILE_VERSION       "FileVersion"
-#define INTERNAL_NAME      "InternalName"
-#define LEGAL_COPYRIGHT    "LegalCopyright"
-#define ORIGINAL_FILENAME  "OriginalFilename"
-#define PRODUCT_NAME       "ProductName"
-#define PRODUCT_VERSION    "ProductVersion"
-//
-// GetStringFileInfo helpers
-//
-#define GetFileCompany(str FileName) GetStringFileInfo(FileName, COMPANY_NAME)
-#define GetFileCopyright(str FileName) GetStringFileInfo(FileName, LEGAL_COPYRIGHT)
-#define GetFileDescription(str FileName) GetStringFileInfo(FileName, FILE_DESCRIPTION)
-#define GetFileProductVersion(str FileName) GetStringFileInfo(FileName, PRODUCT_VERSION)
-#define GetFileVersionString(str FileName) GetStringFileInfo(FileName, FILE_VERSION)
-//
-// ParseVersion
-//
-// Macro internally calls GetFileVersion function and parses string returned
-// by that function (in form "0.0.0.0"). All four version elements are stored
-// in by-reference parameters Major, Minor, Rev, and Build. Macro returns
-// string returned by GetFileVersion.
-//
-#define DeleteToFirstPeriod(str *S) \
-  Local[1] = Copy(S, 1, (Local[0] = Pos(".", S)) - 1), \
-  S = Copy(S, Local[0] + 1), \
-  Local[1]
-//
-#define ParseVersion(str FileName, *Major, *Minor, *Rev, *Build) \
-  Local[1]  = Local[0] = GetFileVersion(FileName), \
-  Local[1] == "" ? "" : ( \
-    Major   = Int(DeleteToFirstPeriod(Local[1])), \
-    Minor   = Int(DeleteToFirstPeriod(Local[1])), \
-    Rev     = Int(DeleteToFirstPeriod(Local[1])), \
-    Build   = Int(Local[1]), \
-  Local[0])
-//
-// EncodeVer
-//
-// Encodes given four version elements to a 32 bit integer number (8 bits for
-// each element, i.e. elements must be within 0...255 range).
-//
-#define EncodeVer(int Major, int Minor, int Revision = 0, int Build = -1) \
-  Major << 24 | (Minor & 0xFF) << 16 | (Revision & 0xFF) << 8 | (Build >= 0 ? Build & 0xFF : 0)
-//
-// DecodeVer
-//
-// Decodes given 32 bit integer encoded version to its string representation,
-// Digits parameter indicates how many elements to show (if the fourth element
-// is 0, it won't be shown anyway).
-//
-#define DecodeVer(int Ver, int Digits = 3) \
-  Str(Ver >> 0x18 & 0xFF) + (Digits > 1 ? "." : "") + \
-  (Digits > 1 ? \
-    Str(Ver >> 0x10 & 0xFF) + (Digits > 2 ? "." : "") : "") + \
-  (Digits > 2 ? \
-    Str(Ver >> 0x08 & 0xFF) + (Digits > 3 && (Local = Ver & 0xFF) ? "." : "") : "") + \
-  (Digits > 3 && Local ? \
-    Str(Ver & 0xFF) : "")
-//
-// FindSection
-//
-// Returns index of the line following the header of the section. This macro
-// is intended to be used with #insert directive.
-//
-#define FindSection(str Section = "Files") \
-  Find(0, "[" + Section + "]", FIND_MATCH | FIND_TRIM) + 1
-//
-// FindSectionEnd
-//
-// Returns index of the line following last entry of the section. This macro
-// is intended to be used with #insert directive.
-//
-#if VER >= 0x03000000
-# define FindNextSection(int Line) \
-    Find(Line, "[", FIND_BEGINS | FIND_TRIM, "]", FIND_ENDS | FIND_AND)
-# define FindSectionEnd(str Section = "Files") \
-    FindNextSection(FindSection(Section))
-#else
-# define FindSectionEnd(str Section = "Files") \
-    FindSection(Section) + EntryCount(Section)
-#endif
-//
-// FindCode
-//
-// Returns index of the line (of translation) following either [Code] section
-// header, or "program" keyword, if any.
-//
-#define FindCode() \
-    Local[1] = FindSection("Code"), \
-    Local[0] = Find(Local[1] - 1, "program", FIND_BEGINS, ";", FIND_ENDS | FIND_AND), \
-    (Local[0] < 0 ? Local[1] : Local[0] + 1)
-//
-// ExtractFilePath
-//
-// Returns directory portion of the given filename with backslash.
-// If PathName doesn't contain directory portion,
-// the result is an empty string.
-//
-#define ExtractFilePath(str PathName) \
-  (Local[0] = \
-    !(Local[1] = RPos("\", PathName)) ? \
-      "" : \
-      Copy(PathName, 1, Local[1] - 1)), \
-  Local[0] + \
-    ((Local[2] = Len(Local[0])) == 2 && Copy(Local[0], Local[2]) == ":" ? \
-      "\" : \
-      "")
-//
-// ExtractFileDir
-//
-// Returns directory portion of the given filename without backslash (unless
-// it is a root directory). If PathName doesn't contain directory portion,
-// the result is an empty string.
-//
-#define ExtractFileDir(str PathName) \
-  RemoveBackslash(ExtractFilePath(PathName))
-
-#define ExtractFileExt(str PathName) \
-  Local[0] = RPos(".", PathName), \
-  Copy(PathName, Local[0] + 1)
-//
-// ExtractFileName
-//
-// Returns name portion of the given filename. If PathName ends with
-// a backslash, the result is an empty string.
-//
-#define ExtractFileName(str PathName) \
-  !(Local[0] = RPos("\", PathName)) ? \
-    PathName : \
-    Copy(PathName, Local[0] + 1)
-//
-// ChangeFileExt
-//
-// Changes extension in FileName with NewExt. NewExt must not contain
-// period.
-//
-#define ChangeFileExt(str FileName, str NewExt) \
-  !(Local[0] = RPos(".", FileName)) ? \
-    FileName + "." + NewExt : \
-    Copy(FileName, 1, Local[0]) + NewExt
-//
-// AddBackslash
-//
-// Adds a backslash to the string, if it's not already there.
-//
-#define AddBackslash(str S) \
-  Copy(S, Len(S)) == "\" ? S : S + "\"
-//
-// RemoveBackslash
-//
-// Removes trailing backslash from the string unless the string points to
-// a root directory.
-//
-#define RemoveBackslash(str S) \
-  Local[0] = Len(S), \
-  Local[0] > 0 ? \
-    Copy(S, Local[0]) == "\" ? \
-      (Local[0] == 3 && Copy(S, 2, 1) == ":" ? \
-        S : \
-        Copy(S, 1, Local[0] - 1)) : \
-      S : \
-    ""
-//
-// Delete
-//
-// Deletes specified number of characters beginning with Index from S. S is
-// passed by reference (therefore is modified). Acts like Delete function in
-// Delphi (from System unit).
-//
-#define Delete(str *S, int Index, int Count = MaxInt) \
-  S = Copy(S, 1, Index - 1) + Copy(S, Index + Count)
-//
-// Insert
-//
-// Inserts specified Substr at Index'th character into S. S is passed by
-// reference (therefore is modified).
-//
-#define Insert(str *S, int Index, str Substr) \
-  Index > Len(S) + 1 ? \
-    S : \
-    S = Copy(S, 1, Index - 1) + SubStr + Copy(S, Index)
-//
-// YesNo, IsDirSet
-//
-// Returns nonzero value if given string is "yes", "true" or "1". Intended to
-// be used with SetupSetting function. This macro replaces YesNo function
-// available in previous releases.
-//
-#define YesNo(str S) \
-  (S = LowerCase(S)) == "yes" || S == "true" || S == "1"
-//
-#define IsDirSet(str SetupDirective) \
-  YesNo(SetupSetting(SetupDirective))
-//
-//
-#define Power(int X, int P = 2) \
-  !P ? 1 : X * Power(X, P - 1)
-//
-#define Min(int A, int B, int C = MaxInt)  \
-  A < B ? A < C ? Int(A) : Int(C) : Int(B)
-//
-#define Max(int A, int B, int C = MinInt)  \
-  A > B ? A > C ? Int(A) : Int(C) : Int(B)
-//
-
-#ifdef CStrings
-# pragma parseroption -p-
-#endif
-#endif
-; END ISPPBUILTINS.ISS
-

+ 12 - 12
Projects/ISPP/IsppFuncs.pas

@@ -1408,19 +1408,19 @@ begin
   try
     with IInternalFuncParams(Params) do
     begin
-      OldDateSeparator := {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DateSeparator;
-      OldTimeSeparator := {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator;
+      OldDateSeparator := {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DateSeparator;
+      OldTimeSeparator := {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator;
       try
         NewDateSeparatorString := Get(1).AsStr;
         NewTimeSeparatorString := Get(2).AsStr;
         if NewDateSeparatorString <> '' then
-          {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DateSeparator := NewDateSeparatorString[1];
+          {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DateSeparator := NewDateSeparatorString[1];
         if NewTimeSeparatorString <> '' then
-          {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator := NewTimeSeparatorString[1];
+          {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator := NewTimeSeparatorString[1];
         MakeStr(ResPtr^, FormatDateTime(Get(0).AsStr, Now()));
       finally
-        {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator := OldTimeSeparator;
-        {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DateSeparator := OldDateSeparator;
+        {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator := OldTimeSeparator;
+        {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DateSeparator := OldDateSeparator;
       end;
     end;
   except
@@ -1443,23 +1443,23 @@ begin
   try
     with IInternalFuncParams(Params) do
     begin
-      OldDateSeparator := {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DateSeparator;
-      OldTimeSeparator := {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator;
+      OldDateSeparator := {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DateSeparator;
+      OldTimeSeparator := {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator;
       try
         NewDateSeparatorString := Get(2).AsStr;
         NewTimeSeparatorString := Get(3).AsStr;
         if NewDateSeparatorString <> '' then
-          {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DateSeparator := NewDateSeparatorString[1];
+          {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DateSeparator := NewDateSeparatorString[1];
         if NewTimeSeparatorString <> '' then
-          {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator := NewTimeSeparatorString[1];
+          {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator := NewTimeSeparatorString[1];
         if not FileAge(PrependPath(Ext, Get(0).AsStr), Age) then begin
           FuncResult.Error('Invalid file name');
           Result.Error := ISPPFUNC_FAIL
         end else
           MakeStr(ResPtr^, FormatDateTime(Get(1).AsStr, Age));
       finally
-        {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}TimeSeparator := OldTimeSeparator;
-        {$IFDEF IS_DXE2}FormatSettings.{$ENDIF}DateSeparator := OldDateSeparator;
+        {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator := OldTimeSeparator;
+        {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DateSeparator := OldDateSeparator;
       end;
     end;
   except

+ 0 - 0
Projects/lzma2/C/Alloc.c → Projects/Lzma2/C/Alloc.c


+ 0 - 0
Projects/lzma2/C/Alloc.h → Projects/Lzma2/C/Alloc.h


+ 0 - 0
Projects/lzma2/C/LzFind.c → Projects/Lzma2/C/LzFind.c


+ 0 - 0
Projects/lzma2/C/LzFind.h → Projects/Lzma2/C/LzFind.h


+ 0 - 0
Projects/lzma2/C/LzFindMt.c → Projects/Lzma2/C/LzFindMt.c


+ 0 - 0
Projects/lzma2/C/LzFindMt.h → Projects/Lzma2/C/LzFindMt.h


+ 0 - 0
Projects/lzma2/C/LzHash.h → Projects/Lzma2/C/LzHash.h


+ 0 - 0
Projects/lzma2/C/Lzma2Dec.c → Projects/Lzma2/C/Lzma2Dec.c


+ 0 - 0
Projects/lzma2/C/Lzma2Dec.h → Projects/Lzma2/C/Lzma2Dec.h


+ 0 - 0
Projects/lzma2/C/Lzma2Enc.c → Projects/Lzma2/C/Lzma2Enc.c


+ 0 - 0
Projects/lzma2/C/Lzma2Enc.h → Projects/Lzma2/C/Lzma2Enc.h


+ 0 - 0
Projects/lzma2/C/LzmaDec.c → Projects/Lzma2/C/LzmaDec.c


+ 0 - 0
Projects/lzma2/C/LzmaDec.h → Projects/Lzma2/C/LzmaDec.h


+ 0 - 0
Projects/lzma2/C/LzmaEnc.c → Projects/Lzma2/C/LzmaEnc.c


+ 0 - 0
Projects/lzma2/C/LzmaEnc.h → Projects/Lzma2/C/LzmaEnc.h


+ 0 - 0
Projects/lzma2/C/MtCoder.c → Projects/Lzma2/C/MtCoder.c


+ 0 - 0
Projects/lzma2/C/MtCoder.h → Projects/Lzma2/C/MtCoder.h


+ 0 - 0
Projects/lzma2/C/Threads.c → Projects/Lzma2/C/Threads.c


+ 0 - 0
Projects/lzma2/C/Threads.h → Projects/Lzma2/C/Threads.h


+ 0 - 0
Projects/lzma2/C/Types.h → Projects/Lzma2/C/Types.h


+ 0 - 0
Projects/lzma2/Decoder/ISLzma2Dec.c → Projects/Lzma2/Decoder/ISLzma2Dec.c


+ 0 - 0
Projects/lzma2/Decoder/ISLzma2Dec.obj → Projects/Lzma2/Decoder/ISLzma2Dec.obj


+ 0 - 0
Projects/lzma2/Decoder/ISLzmaDec.c → Projects/Lzma2/Decoder/ISLzmaDec.c


+ 0 - 0
Projects/lzma2/Decoder/ISLzmaDec.obj → Projects/Lzma2/Decoder/ISLzmaDec.obj


+ 0 - 0
Projects/lzma2/Decoder/compiling.txt → Projects/Lzma2/Decoder/compiling.txt


+ 0 - 0
Projects/lzma2/Encoder/islzma.c → Projects/Lzma2/Encoder/islzma.c


+ 0 - 0
Projects/lzma2/Encoder/islzma.def → Projects/Lzma2/Encoder/islzma.def


+ 0 - 0
Projects/lzma2/Encoder/islzma.h → Projects/Lzma2/Encoder/islzma.h


+ 0 - 0
Projects/lzma2/Encoder/islzma.sln → Projects/Lzma2/Encoder/islzma.sln


+ 0 - 0
Projects/lzma2/Encoder/islzma.vcproj → Projects/Lzma2/Encoder/islzma.vcproj


+ 0 - 0
Projects/lzma2/Encoder/islzma_dll.c → Projects/Lzma2/Encoder/islzma_dll.c


+ 0 - 0
Projects/lzma2/Encoder/islzma_exe.c → Projects/Lzma2/Encoder/islzma_exe.c


+ 0 - 0
Projects/lzma2/Encoder/islzma_exe.vcproj → Projects/Lzma2/Encoder/islzma_exe.vcproj


+ 0 - 0
Projects/Md5.pas → Projects/MD5.pas


+ 3 - 3
Projects/Main.pas

@@ -2,7 +2,7 @@ unit Main;
 
 {
   Inno Setup
-  Copyright (C) 1997-2015 Jordan Russell
+  Copyright (C) 1997-2016 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -3602,8 +3602,8 @@ begin
   S := SetupTitle + ' version ' + SetupVersion + SNewLine;
   if SetupTitle <> 'Inno Setup' then
     S := S + (SNewLine + 'Based on Inno Setup' + SNewLine);
-  S := S + ('Copyright (C) 1997-2015 Jordan Russell' + SNewLine +
-    'Portions Copyright (C) 2000-2015 Martijn Laan' + SNewLine +
+  S := S + ('Copyright (C) 1997-2016 Jordan Russell' + SNewLine +
+    'Portions Copyright (C) 2000-2016 Martijn Laan' + SNewLine +
     'All rights reserved.' + SNewLine2 +
     'Inno Setup home page:' + SNewLine +
     'http://www.innosetup.com/');

+ 0 - 0
Projects/Msgids.pas → Projects/MsgIDs.pas


+ 0 - 0
Projects/Regdll.pas → Projects/RegDLL.pas


+ 0 - 0
Projects/Regsvr.pas → Projects/RegSvr.pas


Деякі файли не було показано, через те що забагато файлів було змінено