Explorar el Código

Merge branch 'darkhelp'

Todo: lighten dark mode link colors & check contents.css->#tabbody-contents->A:hover->color & update Staging-dark's styles.css.
Martijn Laan hace 1 año
padre
commit
1c489645a7
Se han modificado 44 ficheros con 254 adiciones y 477 borrados
  1. 0 7
      .github/workflows/build.yml
  2. 1 0
      ISHelp/.gitignore
  3. 26 31
      ISHelp/ISHelpGen/ISHelpGen.dpr
  4. 6 0
      ISHelp/Staging-dark/.gitignore
  5. BIN
      ISHelp/Staging-dark/images/extlink.png
  6. 17 7
      ISHelp/Staging-dark/styles.css
  7. 33 12
      ISHelp/Staging/contents.css
  8. 1 1
      ISHelp/Staging/contents.js
  9. 0 11
      ISHelp/Staging/hh_isppredirect.xhtm
  10. 0 6
      ISHelp/Staging/hh_project.hhp
  11. BIN
      ISHelp/Staging/images/contentsheadclosed.png
  12. 7 0
      ISHelp/Staging/images/contentsheadclosed.svg
  13. BIN
      ISHelp/Staging/images/contentsheadopen.png
  14. 7 0
      ISHelp/Staging/images/contentsheadopen.svg
  15. BIN
      ISHelp/Staging/images/contentstopic.png
  16. 9 0
      ISHelp/Staging/images/contentstopic.svg
  17. BIN
      ISHelp/Staging/images/extlink.png
  18. 8 0
      ISHelp/Staging/images/extlink.svg
  19. 31 7
      ISHelp/Staging/styles.css
  20. 27 10
      ISHelp/compile.bat
  21. 24 1
      ISHelp/isetup.xml
  22. 0 0
      ISHelp/ispp.dtd
  23. 13 13
      ISHelp/ispp.xml
  24. 1 23
      ISHelp/ispp.xsl
  25. 15 0
      ISHelp/synch-darkfiles.bat
  26. 0 2
      ISPPHelp/.gitignore
  27. 0 10
      ISPPHelp/Staging/.gitignore
  28. 0 37
      ISPPHelp/Staging/contents-template.htm
  29. 0 19
      ISPPHelp/Staging/hh_project.hhp
  30. 0 4
      ISPPHelp/Staging/images/.gitignore
  31. 0 48
      ISPPHelp/Staging/index.htm
  32. 0 17
      ISPPHelp/Staging/index.php
  33. 0 85
      ISPPHelp/Staging/stoplist.stp
  34. 0 57
      ISPPHelp/compile.bat
  35. 0 21
      ISPPHelp/synch-isfiles.bat
  36. 3 1
      Projects/Bin/synch-isfiles.bat
  37. 1 1
      Projects/Src/Compil32/CompForm.dfm
  38. 3 10
      Projects/Src/Compil32/CompForm.pas
  39. 11 2
      Projects/Src/Compil32/CompFunc.pas
  40. 0 8
      README.md
  41. 2 12
      build-ce.bat
  42. 2 12
      build.bat
  43. 3 1
      setup.iss
  44. 3 1
      whatsnew.htm

+ 0 - 7
.github/workflows/build.yml

@@ -53,7 +53,6 @@ jobs:
           "set DELPHIXEROOT=$env:DELPHIXEROOT" | Out-File -NoNewline -Encoding ascii compilesettings.bat
           "set DELPHIXEROOT=$env:DELPHIXEROOT" | Out-File -NoNewline -Encoding ascii ISHelp\ISHelpGen\compilesettings.bat
           "set HHCEXE=%ProgramFiles(x86)%\HTML Help Workshop\hhc.exe" | Out-File -NoNewline -Encoding ascii ISHelp\compilesettings.bat
-          "set HHCEXE=%ProgramFiles(x86)%\HTML Help Workshop\hhc.exe" | Out-File -NoNewline -Encoding ascii ISPPHelp\compilesettings.bat
           .\build.bat
       - name: Clean up temporary files
         if: always()
@@ -63,7 +62,6 @@ jobs:
         run: |
           copy license.txt Files
           copy license.txt Output
-          copy license.txt ISPPHelp/Staging
           copy license.txt ISHelp/Staging
       - name: upload Files
         uses: actions/upload-artifact@v3
@@ -75,11 +73,6 @@ jobs:
         with:
           name: Output
           path: Output
-      - name: upload ISPPHelp
-        uses: actions/upload-artifact@v3
-        with:
-          name: ISPPHelp
-          path: ISPPHelp/Staging
       - name: upload ISHelp
         uses: actions/upload-artifact@v3
         with:

+ 1 - 0
ISHelp/.gitignore

@@ -3,3 +3,4 @@ compilesettings.bat
 e*.bat
 isxclasses_generated.xml
 isxfunc_generated.xml
+ispp_generated.xml

+ 26 - 31
ISHelp/ISHelpGen/ISHelpGen.dpr

@@ -13,7 +13,7 @@ uses
   UIsxclassesParser in 'UIsxclassesParser.pas';
 
 const
-  Version = '1.13';
+  Version = '1.14';
 
   XMLFileVersion = '1';
 
@@ -71,7 +71,7 @@ type
 
 var
   SourceDir, OutputDir: String;
-  ISPP: Boolean;
+  NoContentsHtm: Boolean;
   Keywords, DefinedTopics, TargetTopics, SetupDirectives: TStringList;
   TopicsGenerated: Integer = 0;
   CurrentTopicName: String;
@@ -404,7 +404,7 @@ begin
           if Pos('ms-its:', S) = 1 then
             Result := Result + Format('<a href="%s">%s</a>', [S, ParseFormattedText(Node)])
           else
-            Result := Result + Format('<a href="%s" target="_blank" title="%s">%s</a><img src="images/extlink.png" alt=" [external link]" />',
+            Result := Result + Format('<a href="%s" target="_blank" title="%s">%s</a><img src="images/extlink.png" srcset="images/extlink.svg" alt=" [external link]" />',
               [S, S, ParseFormattedText(Node)]);
         end;
       elHeading:
@@ -672,11 +672,6 @@ var
       Node := Node.NextSibling;
     end;
     SL.Add('</ul>');
-    if not ISPP and (ParentNode = ContentsNode) then begin
-      { Don't put next 2 lines on 1 line or hhc will hang... }
-      SL.Add('<object type="text/sitemap">');
-      SL.Add('<param name="Merge" value="ispp.chm::\hh_generated_contents.hhc"></object>');
-    end;
   end;
 
 begin
@@ -701,7 +696,7 @@ var
 
   procedure AddLeaf(const Title, TopicName: String);
   begin
-    SL.Add(Format('<tr><td><img src="images/contentstopic.png" alt="" /></td>' +
+    SL.Add(Format('<tr><td><img src="images/contentstopic.svg" alt="" /></td>' +
       '<td><a href="%s" target="bodyframe">%s</a></td></tr>',
       [EscapeHTML(GenerateTopicLink(TopicName, '')), EscapeHTML(Title)]));
   end;
@@ -946,8 +941,10 @@ procedure Go;
               begin
                 Writeln('  - Generating hh_generated_contents.hhc');
                 GenerateHTMLHelpContents(Node);
-                Writeln('  - Generating contents.htm');
-                GenerateStaticContents(Node);
+                if not NoContentsHtm then begin
+                  Writeln('  - Generating contents.htm');
+                  GenerateStaticContents(Node);
+                end;
               end;
             elSetupTopic: ParseTopic(Node, True);
             elTopic: ParseTopic(Node, False);
@@ -965,11 +962,9 @@ procedure Go;
 var
   I: Integer;
 begin
-  if not ISPP then begin
-    TransformFile('isxfunc.xml', 'isxfunc.xsl', 'isxfunc_generated.xml');
-    GenerateIsxClassesFile;
-  end else
-    TransformFile('ispp.xml', 'ispp.xsl', 'ispp_generated.xml');
+  TransformFile('isxfunc.xml', 'isxfunc.xsl', 'isxfunc_generated.xml');
+  GenerateIsxClassesFile;
+  TransformFile('ispp.xml', 'ispp.xsl', 'ispp_generated.xml');
 
   Keywords := TStringList.Create;
   Keywords.Duplicates := dupAccept;
@@ -982,20 +977,20 @@ begin
   SetupDirectives.Duplicates := dupError;
   SetupDirectives.Sorted := True;
   try
-    if not ISPP then begin
-      DoDoc('isetup.xml');
-      DoDoc('isx.xml');
-      DoDoc('isxfunc_generated.xml');
-      DoDoc('isxclasses_generated.xml');
-    end else
-      DoDoc('ispp_generated.xml');
+    DoDoc('isetup.xml');
+    DoDoc('isx.xml');
+    DoDoc('isxfunc_generated.xml');
+    DoDoc('isxclasses_generated.xml');
+    DoDoc('ispp_generated.xml');
 
     CheckForNonexistentTargetTopics;
 
     Writeln('- Generating hh_generated_index.hhk');
     GenerateHTMLHelpIndex;
-    Writeln('- Generating contentsindex.js');
-    GenerateStaticIndex;
+    if not NoContentsHtm then begin
+      Writeln('- Generating contentsindex.js');
+      GenerateStaticIndex;
+    end;
   finally
     SetupDirectives.Free;
     TargetTopics.Free;
@@ -1014,16 +1009,16 @@ begin
   try
     Writeln('ISHelpGen v' + Version + ' by Jordan Russell & Martijn Laan');
 
-    if ParamCount <> 1 then begin
-      Writeln('usage: ISHelpGen [source-dir]');
+    if (ParamCount = 0) or (ParamCount > 2) then begin
+      Writeln('usage: ISHelpGen <source-dir> [postfix]');
       Halt(2);
     end;
     SourceDir := ParamStr(1) + '\';
-    OutputDir := SourceDir + 'Staging\';
+    OutputDir := SourceDir + 'Staging' + ParamStr(2) + '\';
 
-    ISPP := FileExists(SourceDir + 'ispp.xml');
-    if ISPP then
-      Writeln('Running in ISPP mode');
+    NoContentsHtm := not FileExists(OutputDir + 'contents-template.htm');
+    if NoContentsHtm then
+      Writeln('Running in NoContentsHtm mode');
 
     OleCheck(CoInitialize(nil));  { for MSXML }
 

+ 6 - 0
ISHelp/Staging-dark/.gitignore

@@ -0,0 +1,6 @@
+hh_project.hhp
+stoplist.stp
+topic.js
+hh_generated_contents.hhc
+hh_generated_index.hhk
+isetup.chm

BIN
ISHelp/Staging-dark/images/extlink.png


+ 17 - 7
ISPPHelp/Staging/styles.css → ISHelp/Staging-dark/styles.css

@@ -1,13 +1,17 @@
 /*
   Inno Setup
-  Copyright (C) 1997-2010 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
+
+	Style sheet used by topic_*.htm
 */
 
 BODY {
 	font: small arial, sans-serif;
 	margin: 0;
+	background-color: #1f1f1f;
+	color:#d6d6d6;
 }
 PRE, TT {
 	font: small "courier new", monospace;
@@ -35,6 +39,12 @@ TD {
            (firefox 1.5 and opera 9 don't have this problem) */
 	vertical-align: baseline;
 }
+IMG {
+	width: 16px;
+	height: 16px;
+	border-style: none;
+	padding-left: 2px;
+}
 A {
 	text-decoration: none;
 }
@@ -79,8 +89,8 @@ LI.compact {
 }
 
 .topicheading {
-	background: ButtonFace;
-	color: WindowText;
+	background-color: #403E41;
+	color: #d6d6d6;
 	padding: 4px 8px;
 	margin: 0;
 	font-size: 120%;
@@ -91,10 +101,10 @@ LI.compact {
 }
 
 .examplebox {
-	background: #f8f8f8;
-	color: black;
+	background-color: #403E41; 
+	color: #d6d6d6;
 	padding: 4px;
-	border: 1px solid #e0e0e0;
+	border: 1px solid #716F71;
 	/* on IE6, if the content of the box is wider than the page,
 	   the width of the box is increased. on firefox 1.5, by default
 	   the box width stays the same, and the content is drawn outside
@@ -143,7 +153,7 @@ TD.setuphdrr {
 
 #redirectbox {
 	position: absolute;
-	background: InfoBackground;
+	background-color: InfoBackground;
 	color: InfoText;
 	padding: 16px 24px;
 	border: 1px solid ThreeDDarkShadow;

+ 33 - 12
ISHelp/Staging/contents.css

@@ -7,12 +7,23 @@
   Style sheet used by contents.htm
 */
 
+:root {
+  color-scheme: light dark;
+  --light-color: WindowText;
+  --dark-color: #d6d6d6;
+  --light-background-color: Window;
+  --dark-background-color: #1f1f1f;
+  --light-tool-background-color: ButtonFace;
+  --dark-tool-background-color: #403E41;
+}
 BODY {
 	font-family: "Segoe UI", Tahoma, sans-serif;
 	font-size: 75%;   /* 9pt (12px/16px) */
 	margin: 0;
-	color: WindowText;
-	background-color: Window;
+	color: WindowText; /* for IE */
+	color: light-dark(var(--light-color), var(--dark-color));
+	background-color: Window; /* for IE */
+	background-color: light-dark(var(--light-background-color), var(--dark-background-color));
 }
 INPUT {
 	font: inherit;
@@ -20,8 +31,10 @@ INPUT {
 
 
 #tabbar {
-	background-color: ButtonFace;
-	color: WindowText;
+	background-color: ButtonFace; /* for IE */
+	background-color: light-dark(var(--light-tool-background-color), var(--dark-tool-background-color));
+	color: WindowText; /* for IE */
+	color: light-dark(var(--light-color), var(--dark-color));
 	padding-top: 6px;
 	cursor: default;
 	-moz-user-select: none;
@@ -31,7 +44,8 @@ INPUT {
 	font-weight: bold;
 }
 #tabbar TD.selectedtab {
-	background-color: Window;
+	background-color: Window; /* for IE */
+	background-color: light-dark(var(--light-background-color), var(--dark-background-color));
 	padding: 2px 6px 3px 6px;
 	border-bottom: none;
 }
@@ -41,7 +55,8 @@ INPUT {
 }
 #tabbar A {
 	background-color: transparent;
-	color: WindowText;
+	color: WindowText; /* for IE */
+	color: light-dark(var(--light-color), var(--dark-color));
 	text-decoration: none;
 	outline: none;
 }
@@ -63,7 +78,8 @@ INPUT {
 #tabbody-contents A:link,
 #tabbody-contents A:visited,
 #tabbody-contents A:active {
-	color: WindowText;
+	color: WindowText; /* for IE */
+	color: light-dark(var(--light-color), var(--dark-color));
 	background-color: transparent;
 	text-decoration: none;
 }
@@ -73,15 +89,18 @@ INPUT {
 }
 #tabbody-contents A.selectedlink:link,
 #tabbody-contents A.selectedlink:visited {
-	color: WindowText;
-	background-color: ButtonFace;
+	color: WindowText; /* for IE */
+	color: light-dark(var(--light-color), var(--dark-color));
+	background-color: ButtonFace; /* for IE */
+	background-color: light-dark(var(--light-tool-background-color), var(--dark-tool-background-color));
 }
 /* It would be cleaner to use :focus, but IE<8 doesn't support it */
 #tabbody-contents A.focusedlink:link,
 #tabbody-contents A.focusedlink:visited {
 	color: HighlightText;
 	background-color: Highlight;
-	outline-color: WindowText;   /* needed for focus rect to appear on Firefox (3.5) */
+	outline-color: WindowText; /* for IE */
+	outline-color: light-dark(var(--light-color), var(--dark-color));   /* needed for focus rect to appear on Firefox (3.5) */
 }
 #tabbody-contents TABLE {
 	border-collapse: collapse;
@@ -110,7 +129,8 @@ INPUT {
 #tabbody-index A:link,
 #tabbody-index A:visited,
 #tabbody-index A:active {
-	color: WindowText;
+	color: WindowText; /* for IE */
+	color: light-dark(var(--light-color), var(--dark-color));
 	background-color: transparent;
 	text-decoration: none;
 }
@@ -121,5 +141,6 @@ INPUT {
 #tabbody-index A:focus {
 	color: HighlightText;
 	background-color: Highlight;
-	outline-color: WindowText;   /* needed for focus rect to appear on Firefox (3.5) */
+	outline-color: WindowText; /* for IE */
+	outline-color: light-dark(var(--light-color), var(--dark-color));   /* needed for focus rect to appear on Firefox (3.5) */
 }

+ 1 - 1
ISHelp/Staging/contents.js

@@ -80,7 +80,7 @@ function toggle_node(id)
 	objContent.style.display = expanding ? "" : "none";
 
 	document.getElementById("nodeimg_" + id).src =
-		expanding ? "images/contentsheadopen.png" : "images/contentsheadclosed.png";
+		expanding ? "images/contentsheadopen.svg" : "images/contentsheadclosed.svg";
 
 	if (expanding) {
 		// Scroll expanded items into view. This is similar to calling scrollIntoView() but

+ 0 - 11
ISHelp/Staging/hh_isppredirect.xhtm

@@ -1,11 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Note: This file has an "xhtm" extension so that the Search tab will ignore it -->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta http-equiv="Refresh" content="0; url=ms-its:ispp.chm::/topic_isppoverview.htm" />
-<title>ISPP Redirect Page</title>
-</head>
-<body>
-</body>
-</html>

+ 0 - 6
ISHelp/Staging/hh_project.hhp

@@ -15,11 +15,5 @@ Title=Inno Setup Help
 $global_ismain=,"hh_generated_contents.hhc","hh_generated_index.hhk",,,,,,,0x22520,,0x300e,,,,,,,,0
 
 
-[FILES]
-hh_isppredirect.xhtm
-
-[MERGE FILES]
-ispp.chm
-
 [INFOTYPES]
 

BIN
ISHelp/Staging/images/contentsheadclosed.png


+ 7 - 0
ISHelp/Staging/images/contentsheadclosed.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+  <g id="icon">
+    <path d="M4.779,1.455l6.442,6.524l-6.442,6.524" fill="none" stroke="#7A7672" stroke-width="1.1" stroke-miterlimit="50"/>
+  </g>
+</svg>

BIN
ISHelp/Staging/images/contentsheadopen.png


+ 7 - 0
ISHelp/Staging/images/contentsheadopen.svg

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+  <g id="icon">
+    <path d="M14.524,4.758L8,11.2L1.476,4.758" fill="none" stroke="#7A7672" stroke-width="1.1" stroke-miterlimit="50"/>
+  </g>
+</svg>

BIN
ISHelp/Staging/images/contentstopic.png


+ 9 - 0
ISHelp/Staging/images/contentstopic.svg

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+  <g id="icon">
+    <circle cx="7.5" cy="7.5" r="7" fill="none" stroke="#228BCB" stroke-width="1" stroke-miterlimit="50"/>
+    <path d="M4.977,4.908C5.357,4.107,6.165,3.5,7.4,3.5c1.754,0,2.723,1.133,2.7,2.381c-0.023,1.225,-0.796,1.659,-1.488,2.026c-0.588,0.309,-1.12,0.561,-1.108,1.27v0.815" fill="none" stroke="#228BCB" stroke-width="1" stroke-miterlimit="50"/>
+    <rect x="6.7" y="11" width="1.6" height="1.3" fill="#238BCB"/>
+  </g>
+</svg>

BIN
ISHelp/Staging/images/extlink.png


+ 8 - 0
ISHelp/Staging/images/extlink.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+  <g id="icon">
+    <path d="M12.45,12.45c-2.734,2.734,-7.166,2.734,-9.899,0s-2.734,-7.166,0,-9.899s7.166,-2.734,9.899,0S15.183,9.716,12.45,12.45z" fill="none" stroke="#228BCB" stroke-width="1" stroke-miterlimit="50"/>
+    <path d="M5,4.5h5.5v5.5M4.406,10.594L10.25,4.75" fill="none" stroke="#228BCB" stroke-width="1" stroke-miterlimit="50"/>
+  </g>
+</svg>

+ 31 - 7
ISHelp/Staging/styles.css

@@ -1,13 +1,26 @@
 /*
   Inno Setup
-  Copyright (C) 1997-2010 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
+
+	Style sheet used by topic_*.htm
 */
 
+:root {
+  color-scheme: light dark;
+  --light-color: WindowText;
+  --dark-color: #d6d6d6;
+  --light-background-color: Window;
+  --dark-background-color: #1f1f1f;
+  --light-tool-background-color: ButtonFace;
+  --dark-tool-background-color: #403E41;
+}
 BODY {
 	font: small arial, sans-serif;
 	margin: 0;
+	color: light-dark(var(--light-color), var(--dark-color));
+	background-color: light-dark(var(--light-background-color), var(--dark-background-color));
 }
 PRE, TT {
 	font: small "courier new", monospace;
@@ -35,6 +48,12 @@ TD {
            (firefox 1.5 and opera 9 don't have this problem) */
 	vertical-align: baseline;
 }
+IMG {
+	width: 16px;
+	height: 16px;
+	border-style: none;
+	padding-left: 2px;
+}
 A {
 	text-decoration: none;
 }
@@ -79,8 +98,10 @@ LI.compact {
 }
 
 .topicheading {
-	background: ButtonFace;
-	color: WindowText;
+	background-color: ButtonFace; /* for IE */
+	background-color: light-dark(var(--light-tool-background-color), var(--dark-tool-background-color));
+	color: WindowText; /* for IE */
+	color: light-dark(var(--light-color), var(--dark-color));
 	padding: 4px 8px;
 	margin: 0;
 	font-size: 120%;
@@ -91,10 +112,13 @@ LI.compact {
 }
 
 .examplebox {
-	background: #f8f8f8;
-	color: black;
+	background-color: #f8f8f8; /* for IE */
+	background-color: light-dark(#f8f8f8, var(--dark-tool-background-color));
+	color: black; /* for IE */
+	color: light-dark(black, var(--dark-color));
 	padding: 4px;
-	border: 1px solid #e0e0e0;
+	border: 1px solid #e0e0e0; /* for IE */
+	border: 1px solid light-dark(#e0e0e0, #716f71);
 	/* on IE6, if the content of the box is wider than the page,
 	   the width of the box is increased. on firefox 1.5, by default
 	   the box width stays the same, and the content is drawn outside
@@ -143,7 +167,7 @@ TD.setuphdrr {
 
 #redirectbox {
 	position: absolute;
-	background: InfoBackground;
+	background-color: InfoBackground;
 	color: InfoText;
 	padding: 16px 24px;
 	border: 1px solid ThreeDDarkShadow;

+ 27 - 10
ISHelp/compile.bat

@@ -9,6 +9,8 @@ rem  Batch file to compile the help file
 
 setlocal
 
+cd /d %~dp0
+
 if exist compilesettings.bat goto compilesettingsfound
 :compilesettingserror
 echo ISHelp\compilesettings.bat is missing or incomplete. It needs to be created
@@ -24,27 +26,42 @@ if "%HHCEXE%"=="" goto compilesettingserror
 
 rem -------------------------------------------------------------------------
 
-echo Generating help files using ISHelpGen:
+echo Synching dark files:
 echo.
-ISHelpGen\ISHelpGen.exe .
+call synch-darkfiles.bat nopause
 if errorlevel 1 goto failed
 
+call :generate_help
+if errorlevel 1 goto failed
+call :generate_help -dark
+if errorlevel 1 goto failed
+
+del /q Staging-dark\topic_*.htm
+
+echo Success!
+exit /b 0
+
+:generate_help
+echo Generating help files using ISHelpGen:
+echo.
+ISHelpGen\ISHelpGen.exe . %1
+if errorlevel 1 exit /b 1
+
 echo.
 echo Running HTML Help Compiler (hhc.exe):
 echo.
-if exist Staging\isetup.chm del Staging\isetup.chm
-if exist Staging\isetup.chm goto failed
-"%HHCEXE%" Staging\hh_project.hhp
-if %errorlevel% neq 1 goto failed
-if not exist Staging\isetup.chm goto failed
+if exist Staging%1\isetup.chm del Staging%1\isetup.chm
+if exist Staging%1\isetup.chm exit /b 1
+"%HHCEXE%" Staging%1\hh_project.hhp
+if %errorlevel% neq 1 exit /b 1
+if not exist Staging%1\isetup.chm exit /b 1
 
 rem  HHC leaves behind a temporary file each time it runs...
 if exist "%TEMP%\~hh*.tmp" del /q "%TEMP%\~hh*.tmp"
 
-copy Staging\isetup.chm ..\Files\ISetup.chm
-if not exist ..\Files\ISetup.chm goto failed
+copy Staging%1\isetup.chm ..\Files\ISetup%1.chm
+if not exist ..\Files\ISetup%1.chm exit /b 1
 
-echo Success!
 exit /b 0
 
 :failed

+ 24 - 1
ISHelp/isetup.xml

@@ -56,6 +56,19 @@
     <contentstopic title="Using COM Automation objects" topic="scriptautomation" />
     <contentstopic title="Debugging" topic="scriptdebug" />
   </contentsheading>
+  <contentsheading title="Inno Setup Preprocessor">
+    <contentstopic title="Introduction" topic="isppoverview" />
+    <contentstopic title="Directives Reference" topic="directives" />
+    <contentstopic title="Support Functions Reference" topic="funcs" />
+    <contentstopic title="User Defined Functions" topic="macros" />
+    <contentstopic title="Expression Syntax" topic="expressions" />
+    <contentstopic title="Predefined Variables" topic="predefinedvars" />
+    <contentstopic title="Line Spanning" topic="linespan" />
+    <contentstopic title="Visibility of Identifiers" topic="visibility" />
+    <contentstopic title="Example Script" topic="example" />
+    <contentstopic title="ISPPBuiltins.iss" topic="builtinsiss" />
+    <contentstopic title="Extended Command Line Compiler" topic="isppcc" />
+  </contentsheading>
   <contentsheading title="Other Information">
     <contentstopic title="Support Inno Setup" topic="donate" />
     <contentstopic title="Unicode Inno Setup" topic="unicode" />
@@ -3377,12 +3390,22 @@ Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; St
 
 <p>As shown in the example above, filenames that include spaces must be enclosed in quotes.</p>
 
-<p>Valid options are: "/O-" to disable output (overriding any <tt>Output</tt> setting in the script), "/O+" to enable output (overriding any <tt>Output</tt> setting in the script), "/O" to specify an output path (overriding any <tt>OutputDir</tt> setting in the script), "/F" to specify an output filename (overriding any <tt>OutputBaseFilename</tt> setting in the script), "/S" to specify a Sign Tool (any Sign Tools configured using the Compiler IDE will be specified automatically), "/Q[p]" for quiet compile (print only error messages, "p" will show progress info), and "/?" to show a help screen.</p>
+<p>Valid options are:</p>
 
 <indent>
+<table>
+<tr><td>/O(+|-)</td><td>Enable or disable output (overrides <tt>Output</tt>)</td></tr>
+<tr><td>/O&lt;path&gt;</td><td>Output files to specified path (overrides <tt>OutputDir</tt>)</td></tr>
+<tr><td>/F&lt;filename&gt;</td><td>Specifies an output filename (overrides <tt>OutputBaseFilename</tt>)</td></tr>
+<tr><td>/S&lt;name&gt;=&lt;command></td><td>Sets a SignTool with the specified name and command (any Sign Tools configured using the Compiler IDE will be specified automatically)</td></tr>
+<tr><td>/Q</td><td>Quiet compile (print error messages only)</td></tr>
+<tr><td>/Qp</td><td>Enable quiet compile while still displaying progress</td></tr>
+</table>
 <example>iscc /Qp /O"My Output" /F"MyProgram-1.0" /Sbyparam=$p "c:\isetup\samples\my script.iss"</example>
 </indent>
 
+<p>Also see <link topic="isppcc">Inno Setup Preprocessor: Command Line Compiler</link> for additional options.</p>
+
 <p>ISCC will return an exit code of 0 if the compile was successful, 1 if the command line parameters were invalid or an internal error occurred, or 2 if the compile failed.</p>
 </li>
 

+ 0 - 0
ISPPHelp/ispp.dtd → ISHelp/ispp.dtd


+ 13 - 13
ISPPHelp/ispp.xml → ISHelp/ispp.xml

@@ -37,7 +37,7 @@
 		<title>Introduction</title>
 		<description header="no">
 			<p>The main purpose of Inno Setup Preprocessor (ISPP) is to automate compile-time tasks and avoid repetition in your scripts. For example, you can declare a compile-time ISPP variable &dash; containing your application name, for instance &dash; and then use its value in several places of your script. If for some reason you need to change the name of your application, you'll have to change it only once in your script. Without ISPP, you would need to change all occurrences of your application name throughout the script.</p>
-			<p>Another example of using ISPP would be gathering version information from your application at compile-time by reading the version info of an EXE file, and using it in your <extlink href="ms-its:isetup.chm::/topic_setup_appvername.htm">AppVerName</extlink> [Setup] section directive or anywhere else. Without ISPP, you would have to modify your script each time the version of your application changes.</p>
+			<p>Another example of using ISPP would be gathering version information from your application at compile-time by reading the version info of an EXE file, and using it in your <link href="setup_appvername">AppVerName</link> [Setup] section directive or anywhere else. Without ISPP, you would have to modify your script each time the version of your application changes.</p>
 			<p>ISPP can even scan your source folder and generate script lines for the found files. Without ISPP, you would have to manually maintain the list of files.</p>
 			<p>Conditional in- and exclusion of portions of script is also possible by using ISPP: you can create one single script for different versions/levels of your applications (for example, trial versus fully functional). Without ISPP, you would need multiple scripts.</p>
 			<p>Finally, ISPP makes it possible to split long lines using a line spanning symbol.</p>
@@ -690,7 +690,7 @@ The first group of options (<tt>option</tt>) controls the general options, while
 		<topic id="funcs">
 			<title>Support Functions Reference</title>
 			<description header="no">
-				<p>There are a number of built-in support functions which you can use to perform compile-time actions and/or change your script. For example the following uses ISPP function <link href="GetVersionNumbersString">GetVersionNumbersString</link> to read version info from an EXE and uses the return value of the function to set the <extlink href="ms-its:isetup.chm::/topic_setup_appvername.htm">AppVerName</extlink> [Setup] section directive using ISPP directive &emit;:</p>
+				<p>There are a number of built-in support functions which you can use to perform compile-time actions and/or change your script. For example the following uses ISPP function <link href="GetVersionNumbersString">GetVersionNumbersString</link> to read version info from an EXE and uses the return value of the function to set the <link href="setup_appvername">AppVerName</link> [Setup] section directive using ISPP directive &emit;:</p>
         <pre>
           <line>#define MyAppVer GetVersionNumbersString(AddBackslash(SourcePath) + "MyProg.exe")</line>
           <line></line>
@@ -932,7 +932,7 @@ The first group of options (<tt>option</tt>) controls the general options, while
 					<pre><line><b>str</b> SetupSetting(<b>str</b>)</line></pre>
 				</section>
 				<description>
-					<p>Parses <extlink href="ms-its:isetup.chm::/topic_setupsection.htm">[Setup] section</extlink> in &curtrans; to find the key whose name is specified as function parameter. Function returns the value of that key if it's found, or an empty string otherwise.</p>
+					<p>Parses <link href="setupsection">[Setup] section</link> in &curtrans; to find the key whose name is specified as function parameter. Function returns the value of that key if it's found, or an empty string otherwise.</p>
 				</description>
 			</topic>
 			<topic id="SetSetupSetting">
@@ -2041,18 +2041,18 @@ The first group of options (<tt>option</tt>) controls the general options, while
 			</description>
 		</topic>
 		<topic id="isppcc">
-			<title>Command Line Compiler Execution</title>
+			<title>Command Line Compiler</title>
 			<description header="no">
-				<p>If Inno Setup Preprocessor is installed the console-mode compiler ISCC.exe automatically provides extra parameters to control Inno Setup Preprocessor:</p>
+				<p>The <link href="compilercmdline">console-mode compiler</link> (ISCC.exe) provides extra parameters to control Inno Setup Preprocessor:</p>
 				<table>
-					<tr><td><code>/D&lt;name&gt;[=&lt;value&gt;]</code></td><td>Emulate <code>#define public &lt;name&gt; &lt;value&gt;</code></td></tr>
-					<tr><td><code>/$&lt;letter&gt;(+|-)</code></td><td>Emulate <code>#pragma option -&lt;letter&gt;(+|-)</code></td></tr>
-					<tr><td><code>/P&lt;letter&gt;(+|-)</code></td><td>Emulate <code>#pragma parseroption -&lt;letter&gt;(+|-)</code></td></tr>
-					<tr><td><code>/I&lt;paths&gt;</code></td><td>Emulate <code>#pragma include &lt;paths&gt;</code></td></tr>
-					<tr><td><code>/J&lt;filename&gt;</code></td><td>Emulate <code>#include &lt;filename&gt;</code></td></tr>
-					<tr><td><code>/{#&lt;string&gt;</code></td><td>Emulate <code>#pragma inlinestart &lt;string&gt;</code></td></tr>
-					<tr><td><code>/}&lt;string&gt;</code></td><td>Emulate <code>#pragma inlineend &lt;string&gt;</code></td></tr>
-					<tr><td><code>/V&lt;number&gt;</code></td><td>Emulate <code>#pragma verboselevel &lt;number&gt;</code></td></tr>
+					<tr><td>/D&lt;name&gt;[=&lt;value&gt;]</td><td>Emulate <code>#define public &lt;name&gt; &lt;value&gt;</code></td></tr>
+					<tr><td>/$&lt;letter&gt;(+|-)</td><td>Emulate <code>#pragma option -&lt;letter&gt;(+|-)</code></td></tr>
+					<tr><td>/P&lt;letter&gt;(+|-)</td><td>Emulate <code>#pragma parseroption -&lt;letter&gt;(+|-)</code></td></tr>
+					<tr><td>/I&lt;paths&gt;</td><td>Emulate <code>#pragma include &lt;paths&gt;</code></td></tr>
+					<tr><td>/J&lt;filename&gt;</td><td>Emulate <code>#include &lt;filename&gt;</code></td></tr>
+					<tr><td>/{#&lt;string&gt;</td><td>Emulate <code>#pragma inlinestart &lt;string&gt;</code></td></tr>
+					<tr><td>/}&lt;string&gt;</td><td>Emulate <code>#pragma inlineend &lt;string&gt;</code></td></tr>
+					<tr><td>/V&lt;number&gt;</td><td>Emulate <code>#pragma verboselevel &lt;number&gt;</code></td></tr>
 				</table>
 				<p>Example: <tt>iscc /$c- /Pu+ "/DLicenseFile=Trial License.txt" /Ic:\inc;d:\inc /Jdefines.iss "c:\isetup\samples\my script.iss"</tt></p>
 			</description>

+ 1 - 23
ISPPHelp/ispp.xsl → ISHelp/ispp.xsl

@@ -10,7 +10,7 @@
   <xsl:comment>
     Inno Setup Preprocessor Reference
     Copyright (C) 1997-2024 Jordan Russell
-    Portions Copyright (C) 2000-2020 Martijn Laan
+    Portions Copyright (C) 2000-2024 Martijn Laan
     For conditions of distribution and use, see LICENSE.TXT.
     Portions Copyright (C) 2001-2004 Alex Yackimoff
 
@@ -19,28 +19,6 @@
 
   <ishelp version="1">
 
-  <xsl:comment>Table of contents</xsl:comment>
-
-  <contents>
-    <contentsheading title="Inno Setup Preprocessor">
-      <contentstopic title="Introduction" topic="isppoverview" />
-      <contentstopic title="Directives Reference" topic="directives" />
-      <contentstopic title="Support Functions Reference" topic="funcs" />
-      <contentstopic title="User Defined Functions" topic="macros" />
-      <contentstopic title="Expression Syntax" topic="expressions" />
-      <contentstopic title="Predefined Variables" topic="predefinedvars" />
-      <contentstopic title="Line Spanning" topic="linespan" />
-      <contentsheading title="Other Information">
-        <contentstopic title="Visibility of Identifiers" topic="visibility" />
-        <contentstopic title="Example Script" topic="example" />
-        <contentstopic title="ISPPBuiltins.iss" topic="builtinsiss" />
-        <contentstopic title="Extended Command Line Compiler" topic="isppcc" />
-      </contentsheading>
-    </contentsheading>
-  </contents>
-
-  <xsl:comment>Topics</xsl:comment>
-
   <xsl:apply-templates/>
 
   </ishelp>

+ 15 - 0
ISHelp/synch-darkfiles.bat

@@ -0,0 +1,15 @@
+@echo off
+
+cd /d %~dp0
+
+echo - Synching files from Staging to Staging-dark
+
+copy Staging\hh_project.hhp Staging-dark
+copy Staging\stoplist.stp Staging-dark
+copy Staging\topic.js Staging-dark
+
+echo - Synching files done
+
+if "%1"=="nopause" goto :eof
+
+pause

+ 0 - 2
ISPPHelp/.gitignore

@@ -1,2 +0,0 @@
-isetup.dtd
-ispp_generated.xml

+ 0 - 10
ISPPHelp/Staging/.gitignore

@@ -1,10 +0,0 @@
-contents.css
-contents.js
-styles.css
-topic.js
-contents.htm
-contentsindex.js
-hh_generated_contents.hhc
-hh_generated_index.hhk
-ispp.chm
-topic_*.htm

+ 0 - 37
ISPPHelp/Staging/contents-template.htm

@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta http-equiv="X-UA-Compatible" content="IE=8" />
-<title>Inno Setup Preprocessor Help Contents</title>
-<!--[if IE 6]><style type="text/css">html{overflow-y:scroll}</style><![endif]-->
-<link rel="stylesheet" type="text/css" href="contents.css" />
-<script type="text/javascript" src="contents.js"></script>
-</head>
-<body onload="init_contents(2);">
-
-<div id="tabbar">
-<table cellspacing="0">
-<tr>
-<td><div style="width: 4px"></div></td>
-<td id="tab-contents" class="selectedtab" onmousedown="select_tab('contents');"><a href="javascript:select_tab('contents');">Contents</a></td>
-<td id="tab-index" class="unselectedtab" onmousedown="select_tab('index');"><a href="javascript:select_tab('index');">Index</a></td>
-<td style="width: 100%">&nbsp;</td>
-</tr>
-</table>
-</div>
-
-<div style="padding: 4px 2px 2px 2px">
-
-<div id="tabbody-contents">
-%CONTENTSTABLES%
-</div>
-
-<div id="tabbody-index" style="display: none">
-<div style="margin-top: 1em; text-align: center; color: GrayText">Loading...</div>
-</div>
-
-</div>
-
-</body>
-</html>

+ 0 - 19
ISPPHelp/Staging/hh_project.hhp

@@ -1,19 +0,0 @@
-[OPTIONS]
-Compatibility=1.1 or later
-Compiled file=ispp.chm
-Contents file=hh_generated_contents.hhc
-Default Window=$global_ismain
-Default topic=topic_isppoverview.htm
-Display compile progress=Yes
-Full-text search=Yes
-Full text search stop list file=stoplist.stp
-Index file=hh_generated_index.hhk
-Language=0x409 English (United States)
-Title=Inno Setup Preprocessor Help
-
-[WINDOWS]
-$global_ismain=,"hh_generated_contents.hhc","hh_generated_index.hhk",,,,,,,0x22520,,0x300e,,,,,,,,0
-
-
-[INFOTYPES]
-

+ 0 - 4
ISPPHelp/Staging/images/.gitignore

@@ -1,4 +0,0 @@
-contentsheadclosed.png
-contentsheadopen.png
-contentstopic.png
-extlink.png

+ 0 - 48
ISPPHelp/Staging/index.htm

@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta http-equiv="X-UA-Compatible" content="IE=8" />
-<title>Inno Setup Preprocessor Help</title>
-<script type="text/javascript"><!--
-
-var contentsFrameLoaded = false;
-var bodyFrameLoaded = false;
-
-// When this page is first loaded, trigger_sync_contents() isn't called
-// until both contentsframe.onload and bodyframe.onload have fired
-// (order does not matter). After that, trigger_sync_contents() is
-// called whenever further onload events come in on either frame (as
-// a result of refreshing, clicking a link, or clicking Back/Forward).
-
-function trigger_sync_contents()
-{
-	window.frames["contentsframe"].sync_contents();
-}
-
-function bodyframe_loaded()
-{
-	bodyFrameLoaded = true;
-	if (contentsFrameLoaded) trigger_sync_contents();
-}
-
-function contentsframe_loaded()
-{
-	contentsFrameLoaded = true;
-	if (bodyFrameLoaded) trigger_sync_contents();
-}
-
---></script>
-</head>
-<frameset cols="242, *">
-  <frame name="contentsframe" src="contents.htm" onload="contentsframe_loaded();" />
-  <frame name="bodyframe" src="topic_isppoverview.htm" onload="bodyframe_loaded();" />
-  <noframes>
-    <body>
-      <p>Your browser does not support frames.</p>
-      <p><a href="contents.htm">View the table of contents</a></p>
-    </body>
-  </noframes>
-</frameset>
-</html>

+ 0 - 17
ISPPHelp/Staging/index.php

@@ -1,17 +0,0 @@
-<?php
-
-$topic = @$_GET['topic'];
-if (!preg_match('/^[a-z0-9_\-]+\z/', $topic))
-  $topic = 'isppoverview';
-
-$anchor = '#' . @$_GET['anchor'];
-if (!preg_match('/^#[a-zA-Z0-9_\-.]+\z/', $anchor))
-  $anchor = '';
-
-$text = @file_get_contents('index.htm');
-if (!$text) die('Error reading file');
-
-$text = str_replace('topic_isppoverview.htm', htmlspecialchars("topic_$topic.htm$anchor"), $text);
-echo $text;
-
-?>

+ 0 - 85
ISPPHelp/Staging/stoplist.stp

@@ -1,85 +0,0 @@
-a
-about
-after
-against
-all
-also
-among
-an
-and
-are
-as
-at
-be
-became
-because
-been
-between
-but
-by
-can
-come
-do
-during
-each
-early
-form
-found
-from
-had
-has
-have
-he
-her
-his
-however
-in
-into
-is
-it
-its
-late
-later
-me
-made
-many
-may
-more
-most
-near
-no
-non
-not
-of
-on
-only
-or
-other
-over
-several
-she
-some
-such
-than
-that
-the
-their
-then
-there
-these
-they
-this
-through
-to
-under
-until
-use
-was
-we
-were
-when
-where
-which
-who
-with
-you

+ 0 - 57
ISPPHelp/compile.bat

@@ -1,57 +0,0 @@
-@echo off
-
-rem  Inno Setup Preprocessor
-rem  Copyright (C) 2001-2004 Alex Yackimoff
-rem  Portions by Martijn Laan
-rem
-rem  Batch file to compile the help file
-
-setlocal
-
-if exist compilesettings.bat goto compilesettingsfound
-:compilesettingserror
-echo ISPPHelp\compilesettings.bat is missing or incomplete. It needs
-echo to be created with the following lines, adjusted for your system:
-echo.
-echo   set HHCEXE=%%ProgramFiles%%\HTML Help Workshop\hhc.exe   [Path to help compiler]
-goto failed2
-
-:compilesettingsfound
-set HHCEXE=
-call .\compilesettings.bat
-if "%HHCEXE%"=="" goto compilesettingserror
-
-rem -------------------------------------------------------------------------
-
-echo Synching IS files:
-echo.
-call synch-isfiles.bat
-if errorlevel 1 goto failed
-
-echo Generating help files using ISHelpGen:
-echo.
-..\ISHelp\ISHelpGen\ISHelpGen.exe .
-if errorlevel 1 goto failed
-
-echo.
-echo Running HTML Help Compiler (hhc.exe):
-echo.
-del Staging\ispp.chm
-if exist Staging\ispp.chm goto failed
-"%HHCEXE%" Staging\hh_project.hhp
-if %errorlevel% neq 1 goto failed
-if not exist Staging\ispp.chm goto failed
-
-rem  HHC leaves behind a temporary file each time it runs...
-if exist "%TEMP%\~hh*.tmp" del /q "%TEMP%\~hh*.tmp"
-
-copy Staging\ispp.chm ..\Files\ISPP.chm
-if not exist ..\Files\ISPP.chm goto failed
-
-echo Success!
-exit /b 0
-
-:failed
-echo *** FAILED ***
-:failed2
-exit /b 1

+ 0 - 21
ISPPHelp/synch-isfiles.bat

@@ -1,21 +0,0 @@
-@echo off
-
-cd /d %~dp0
-
-echo - Synching files from ISHelp to ISPPHelp
-
-copy ..\ISHelp\isetup.dtd
-copy ..\ISHelp\Staging\contents.css Staging
-copy ..\ISHelp\Staging\contents.js Staging
-copy ..\ISHelp\Staging\styles.css Staging
-copy ..\ISHelp\Staging\topic.js Staging
-copy ..\ISHelp\Staging\images\contentsheadclosed.png Staging\images
-copy ..\ISHelp\Staging\images\contentsheadopen.png Staging\images
-copy ..\ISHelp\Staging\images\contentstopic.png Staging\images
-copy ..\ISHelp\Staging\images\extlink.png Staging\images
-
-echo - Synching files done
-
-if "%1"=="nopause" goto :eof
-
-pause

+ 3 - 1
Projects/Bin/synch-isfiles.bat

@@ -1,3 +1,5 @@
+@echo off
+
 cd /d %~dp0
 
 echo - Synching files from Files to Projects\Bin
@@ -10,7 +12,7 @@ copy ..\..\Files\isscint.dll
 copy ..\..\Files\islzma.dll
 copy ..\..\Files\islzma*.exe
 copy ..\..\Files\ISetup.chm
-copy ..\..\Files\ISPP.chm
+copy ..\..\Files\ISetup-dark.chm
 
 echo - Synching files done
 

+ 1 - 1
Projects/Src/Compil32/CompForm.dfm

@@ -828,7 +828,7 @@ object CompileForm: TCompileForm
     end
     object HMenu: TMenuItem
       Caption = '&Help'
-      OnClick = HMenuClick
+      OnClick = SimpleMenuClick
       object HDonate: TMenuItem
         Caption = 'D&onate - Thank you!'
         OnClick = HDonateClick

+ 3 - 10
Projects/Src/Compil32/CompForm.pas

@@ -294,7 +294,6 @@ type
     procedure RParametersClick(Sender: TObject);
     procedure POutputListCopyClick(Sender: TObject);
     procedure BStopCompileClick(Sender: TObject);
-    procedure HMenuClick(Sender: TObject);
     procedure EGotoClick(Sender: TObject);
     procedure RTerminateClick(Sender: TObject);
     procedure BMenuClick(Sender: TObject);
@@ -3220,14 +3219,6 @@ begin
     PChar(Format('/select,"%s"', [FCompiledExe])), PChar(Dir), SW_SHOWNORMAL);
 end;
 
-procedure TCompileForm.HMenuClick(Sender: TObject);
-begin
-  HISPPDoc.Visible := NewFileExists(PathExtractPath(NewParamStr(0)) + 'ispp.chm');
-  HISPPSep.Visible := HISPPDoc.Visible;
-
-  ApplyMenuBitmaps(Sender as TMenuItem);
-end;
-
 procedure TCompileForm.HShortcutsDocClick(Sender: TObject);
 begin
   if Assigned(HtmlHelp) then
@@ -3272,7 +3263,7 @@ end;
 procedure TCompileForm.HISPPDocClick(Sender: TObject);
 begin
   if Assigned(HtmlHelp) then
-    HtmlHelp(GetDesktopWindow, PChar(GetHelpFile + '::/hh_isppredirect.xhtm'), HH_DISPLAY_TOPIC, 0);
+    HtmlHelp(GetDesktopWindow, PChar(GetHelpFile), HH_DISPLAY_TOPIC, Cardinal(PChar('topic_isppoverview.htm')));
 end;
 
 procedure TCompileForm.HDonateClick(Sender: TObject);
@@ -6044,6 +6035,8 @@ procedure TCompileForm.UpdateTheme;
 begin
   FTheme.Typ := FOptions.ThemeType;
 
+  SetHelpFileDark(FTheme.Dark);
+
   for var Memo in FMemos do begin
     Memo.UpdateThemeColorsAndStyleAttributes;
     SetControlWindowTheme(Memo, FTheme.Dark);

+ 11 - 2
Projects/Src/Compil32/CompFunc.pas

@@ -65,6 +65,7 @@ procedure SaveTextToFile(const Filename: String;
   const S: String; const SaveEncoding: TSaveEncoding);
 procedure AddLines(const ListBox: TListBox; const S: String; const AObject: TObject; const LineBreaks: Boolean; const Prefix: TAddLinesPrefix; const PrefixParam: Cardinal);
 procedure SetLowPriority(ALowPriority: Boolean; var SavePriorityClass: DWORD);
+procedure SetHelpFileDark(const Dark: Boolean);
 function GetHelpFile: String;
 function FindOptionsToSearchOptions(const FindOptions: TFindOptions): TScintFindOptions;
 procedure StartAddRemovePrograms;
@@ -79,7 +80,7 @@ function GetPreferredMemoFont: String;
 implementation
 
 uses
-  ActiveX, ShlObj, ShellApi, CommDlg, SysUtils, IOUtils,
+  ActiveX, ShlObj, ShellApi, CommDlg, SysUtils, IOUtils, StrUtils,
   Messages, DwmApi, Consts,
   CmnFunc2, PathFunc, FileClass, NewUxTheme,
   CompForm, CompMsgs2, CompTypes;
@@ -703,9 +704,17 @@ begin
   end;
 end;
 
+var
+  HelpFileDark: Boolean;
+
+procedure SetHelpFileDark(const Dark: Boolean);
+begin
+  HelpFileDark := Dark;
+end;
+
 function GetHelpFile: String;
 begin
-  Result := PathExtractPath(NewParamStr(0)) + 'isetup.chm';
+  Result := Format('%sisetup%s.chm', [PathExtractPath(NewParamStr(0)), IfThen(HelpFileDark, '-dark', '')]);
 end;
 
 function FindOptionsToSearchOptions(const FindOptions: TFindOptions): TScintFindOptions;

+ 0 - 8
README.md

@@ -79,11 +79,6 @@ Getting Started
    instructions. The former batch file cannot be used with the
    Community Edition, open Projects\Projects.groupproj instead.
 
-   To just compile the Inno Setup Preprocessor help file and its web version run
-   **ISHelp\ISHelpGen\compile.bat** and **ISPPHelp\compile.bat** and
-   follow the instructions. The former batch file cannot be used with the
-   Community Edition, open Projects\Projects.groupproj instead.
-
 
 Component Installation
 ----------------------
@@ -159,9 +154,6 @@ How do the projects link together?
   all units used by the Compiler IDE only. Check the .dpr files of the
   projects for unit usage details.
 
-- The ISPP help file uses various copies of other Inno Setup files. To synch
-  these run **ISPPHelp\synch-isfiles.bat**.
-
 
 Source code tips
 ----------------

+ 2 - 12
build-ce.bat

@@ -11,8 +11,7 @@ rem  Calls setup-sign.bat if it exists, else creates setup.exe without signing
 rem
 rem  This batch files does the following things:
 rem  -Ask the user to compile Inno Setup and ISHelpGen after clearing output first
-rem  -Compile ISPP.chm
-rem  -Compile ISetup.chm
+rem  -Compile ISetup*.chm
 rem  -Create Inno Setup installer
 rem
 rem  Once done the installer can be found in Output
@@ -53,22 +52,13 @@ call :waitforfile ishelp\ishelpgen\ishelpgen.exe
 echo Found all, waiting 2 seconds more...
 timeout /t 2 /nobreak >nul
 
-cd ispphelp
-if errorlevel 1 goto failed
-call .\compile.bat
-if errorlevel 1 goto failed
-cd ..
-if errorlevel 1 goto failed
-echo Compiling ISPP.chm done
-pause
-
 cd ishelp
 if errorlevel 1 goto failed
 call .\compile.bat
 if errorlevel 1 goto failed
 cd ..
 if errorlevel 1 goto failed
-echo Compiling ISetup.chm done
+echo Compiling ISetup*.chm done
 pause
 
 :setup

+ 2 - 12
build.bat

@@ -11,8 +11,7 @@ rem  Calls setup-sign.bat if it exists, else creates setup.exe without signing
 rem
 rem  This batch files does the following things:
 rem  -Compile ISHelpGen
-rem  -Compile ISPP.chm
-rem  -Compile ISetup.chm
+rem  -Compile ISetup*.chm
 rem  -Compile Inno Setup
 rem  -Create Inno Setup installer
 rem
@@ -39,22 +38,13 @@ if errorlevel 1 goto failed
 echo Compiling ISHelpGen done
 pause
 
-cd ispphelp
-if errorlevel 1 goto failed
-call .\compile.bat
-if errorlevel 1 goto failed
-cd ..
-if errorlevel 1 goto failed
-echo Compiling ISPP.chm done
-pause
-
 cd ishelp
 if errorlevel 1 goto failed
 call .\compile.bat
 if errorlevel 1 goto failed
 cd ..
 if errorlevel 1 goto failed
-echo Compiling ISetup.chm done
+echo Compiling ISetup*.chm done
 pause
 
 call .\compile.bat

+ 3 - 1
setup.iss

@@ -89,6 +89,7 @@ Name: fileassoc; Description: "{cm:AssocFileExtension,Inno Setup,.iss}"; Check:
 ; Remove old ISPP files
 Type: files; Name: "{app}\ISCmplr.dls"
 Type: files; Name: "{app}\Builtins.iss"
+Type: files; Name: "{app}\ISPP.chm"
 ; Remove desktop icon if needed
 Type: files; Name: {autodesktop}\Inno Setup Compiler.lnk; Tasks: not desktopicon; Check: not PortableCheck
 ; Remove old FAQ file
@@ -114,6 +115,7 @@ Type: files; Name: "{app}\WizModernSmallImage-IS.bmp"
 [Files]
 Source: "license.txt"; DestDir: "{app}"; Flags: ignoreversion touch
 Source: "files\ISetup.chm"; DestDir: "{app}"; Flags: ignoreversion touch
+Source: "files\ISetup-dark.chm"; DestDir: "{app}"; Flags: ignoreversion touch
 Source: "files\Compil32.exe"; DestDir: "{app}"; Flags: ignoreversion signonce touch
 Source: "files\isscint.dll"; DestDir: "{app}"; Flags: ignoreversion signonce touch
 #ifndef isccexe
@@ -184,7 +186,6 @@ Source: "Examples\MyDll\C#\MyDll.sln"; DestDir: "{app}\Examples\MyDll\C#"; Flags
 Source: "Examples\MyDll\C#\packages.config"; DestDir: "{app}\Examples\MyDll\C#"; Flags: ignoreversion touch
 Source: "Examples\MyDll\C#\Properties\AssemblyInfo.cs"; DestDir: "{app}\Examples\MyDll\C#\Properties"; Flags: ignoreversion touch
 Source: "Examples\MyDll\Delphi\MyDll.dpr"; DestDir: "{app}\Examples\MyDll\Delphi"; Flags: ignoreversion touch
-Source: "files\ISPP.chm"; DestDir: "{app}"; Flags: ignoreversion touch
 #ifndef isppdll
   #define isppdll "ispp.dll"
 #endif
@@ -201,6 +202,7 @@ Type: files; Name: "{app}\isfaq.url"
 ; All these will be automatically skipped on portable mode, either because of NoIconsCheck being checked, or because of the desktopicon task being removed
 Name: "{group}\Inno Setup Compiler"; Filename: "{app}\Compil32.exe"; WorkingDir: "{app}"; AppUserModelID: "JR.InnoSetup.IDE.6"
 Name: "{group}\Inno Setup Documentation"; Filename: "{app}\ISetup.chm"
+Name: "{group}\Inno Setup Documentation (Dark)"; Filename: "{app}\ISetup-dark.chm"
 Name: "{group}\Inno Setup Example Scripts"; Filename: "{app}\Examples\"
 Name: "{group}\Inno Setup FAQ"; Filename: "{app}\isfaq.url"
 Name: "{group}\Inno Setup Revision History"; Filename: "{app}\whatsnew.htm"

+ 3 - 1
whatsnew.htm

@@ -78,7 +78,9 @@ For conditions of distribution and use, see <a href="files/is/license.txt">LICEN
   <li>Pascal Scripting change: Added new <tt>ExecAndCaptureOutput</tt> support function to execute a program or batch file and capture its <i>stdout</i> and <i>stderr</i> output.</li>
   <li>Fixed an issue when the <i>Auto indent mode</i> and <i>Allow cursor to move beyond end of lines</i> options are both enabled.</li>  
   <li>Pascal Scripting change: documented support functions <tt>VarArrayGet</tt> and <tt>VarArraySet</tt> which were already available but not documented.</li>
-  <li>Various tweaks and documentation improvements.</li>
+  <li>The Inno Setup Preprocessor documentation has been merged into the main documentation instead of being separate.</li>
+  <li>Added a dark mode version of the documentation, automatically used by the Compiler IDE if a dark theme is chosen.</li>
+  <li>Various tweaks and other documentation improvements.</li>
 </ul>
 
 <p>Contributions via <a href="https://github.com/jrsoftware/issrc" target="_blank">GitHub</a>: Thanks to Sergii Leonov, John Stevenson, and jogo- for their contributions!</p>