[setup - the official Cygwin setup program] branch master, updated. release_2.924-15-g03940e87

Jon Turney jturney@sourceware.org
Thu Feb 2 12:57:18 GMT 2023




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=03940e87ea9cf42e30fad54701a9a4aef08e7a10

commit 03940e87ea9cf42e30fad54701a9a4aef08e7a10
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Wed Feb 1 13:33:57 2023 +0000

    Handle TTN_GETDISPINFOW
    
    As a consequence of the previous commits, we're now receiving
    TTN_GETDISPINFOW rather than TTN_GETDISPINFOA, so handle that (which
    makes full unicode in the tooltip possible).

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=75bfcddbdcc76b66c3d99f5b556038a13ce8e4cf

commit 75bfcddbdcc76b66c3d99f5b556038a13ce8e4cf
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Wed Feb 1 13:10:25 2023 +0000

    Use SetWindowLongPtrW() when setting WndProc
    
    Using the SetWindowLongPtrA() variant means that a Unicode to ASCII shim
    is inserted around the installed WndProc, which is not what we want.
    
    (Specfically, this flattens the PropSheet caption to an 8-bit encoding
    as it passes through the WndProc as a WM_SETTEXT message, which is not
    reversible for non-latin scripts)
    
    Future work: Rewrite this using SetWindowSubclass() instead, which
    sidesteps all these issues.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=b567162a4c65e15991f5b5c9ebc6b5f8268e7933

commit b567162a4c65e15991f5b5c9ebc6b5f8268e7933
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Jan 30 23:27:10 2023 +0000

    Use wide-char PropSheet API
    
    This probably has no effect on Vista or later, where the manifest ensure
    we are using common controls 6.0, which are fully unicode internally,
    but it probably neccessary on XP.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=27287ee40049e06e765a07d96b3b4029ff086823

commit 27287ee40049e06e765a07d96b3b4029ff086823
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Jan 30 21:49:05 2023 +0000

    Add zh_Hans resources to build

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=80c0453ba18b9b7d1af9ae84682514b40eff6295

commit 80c0453ba18b9b7d1af9ae84682514b40eff6295
Author: Xiang Heng Wei <yylteam@hotmail.com>
Date:   Sat Dec 3 12:12:23 2022 +0100

    Added translation using Weblate (Chinese (Simplified))
    
    Currently translated at 100.0% (285 of 285 strings)
    
    Translation: cygwin-setup/cygwin-setup
    Translate-URL: https://hosted.weblate.org/projects/cygwin-setup/cygwin-setup/zh_Hans/

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=f5c2b2947699f89c5e453484b0a43aa6c0aa279e

commit f5c2b2947699f89c5e453484b0a43aa6c0aa279e
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Jan 30 14:30:24 2023 +0000

    Don't append '-src' when forming source package name, if already present

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=5cd552f7fde1a065c6218dbcc848ef42b37eef06

commit 5cd552f7fde1a065c6218dbcc848ef42b37eef06
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Tue Jan 31 13:46:04 2023 +0000

    Update displayed copyright to 2023

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=04f63f06f5bb195c8809419089ac8f2aa1cc5da9

commit 04f63f06f5bb195c8809419089ac8f2aa1cc5da9
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Wed Aug 24 13:31:49 2022 +0100

    Drop setting root_scope as a side-effect of read_mounts()
    
    Default root_scope as appropriate, allowing GUI to override it
    Only enable 'Install For All Users' if we have Admin privs
    Drop some comment cruft

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=78e8318515d45acb421a1655f018057fa835d6f9

commit 78e8318515d45acb421a1655f018057fa835d6f9
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jul 8 16:46:14 2022 +0100

    Defer setting group until after All Users/Just For Me is chosen

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=3d427dc967d5701236fe86e418b7518ff4e98e38

commit 3d427dc967d5701236fe86e418b7518ff4e98e38
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jul 8 15:56:59 2022 +0100

    Drop group change while running postinstall scripts
    
    Drop group change while running postinstall scripts.  This was only for
    the benefit of mkgroup/mkpasswd being run by the postinstall script,
    which we don't do any more.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=a7d1deda1f1eb1613576463933355d718fab39cb

commit a7d1deda1f1eb1613576463933355d718fab39cb
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jan 27 14:48:30 2023 +0000

    Show deprecation warning for Windows versions 6.1 and 6.2
    
    - Windows 6.1 (Windows 7, Windows Server 2008R2)
    - Windows 6.2 (Windows 8, Windows Server 2012)

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=7b6409341715d05c0f700acd6872db020d229c82

commit 7b6409341715d05c0f700acd6872db020d229c82
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jan 27 14:17:03 2023 +0000

    Expose no-startmenu option to post-install and pre-remove scripts

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=c8ea8d6cc480ea73bfa56efd6b81f1eeec57f225

commit c8ea8d6cc480ea73bfa56efd6b81f1eeec57f225
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jan 27 14:05:48 2023 +0000

    Add '(x86_64)' to start menu folders when installing on e.g ARM64
    
    Also make that start menu folder suffix available to post-install and
    pre-remove scripts.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=4d1bc244c000c979a5169e6a2c063918ff3da77a

commit 4d1bc244c000c979a5169e6a2c063918ff3da77a
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jan 27 13:44:04 2023 +0000

    Add ProgramData to the env var whitelist for running scripts
    
    It seems that we can end up calling some Win32 API which uses that env
    var to form the path for a temporary directory.  If we don't set it, we
    end up using a directory called '%SystemDrive%'.
    
    (This was a problem seen with e.g. man-db's post-install scripts)


Diff:
---
 IniDBBuilderPackage.cc |   25 +-
 ListView.cc            |   12 +-
 Makefile.am            |    5 +-
 desktop.cc             |   21 +-
 desktop.h              |    6 +
 langopts               |    4 +
 main.cc                |   23 +-
 mount.cc               |   30 +-
 mount.h                |    9 +-
 po/zh_Hans/res.po      | 1454 ++++++++++++++++++++++++++++++++++++++++++++++++
 postinstall.cc         |   13 -
 proppage.cc            |   12 +-
 proppage.h             |    4 +-
 propsheet.cc           |   23 +-
 res.rc                 |    1 +
 res/zh_Hans/res.rc     |  535 ++++++++++++++++++
 root.cc                |   17 +
 script.cc              |   10 +
 splash.cc              |    2 +-
 win32.cc               |   13 +-
 win32.h                |    2 +-
 window.cc              |    8 +-
 22 files changed, 2139 insertions(+), 90 deletions(-)

diff --git a/IniDBBuilderPackage.cc b/IniDBBuilderPackage.cc
index 6305ac80..039404ba 100644
--- a/IniDBBuilderPackage.cc
+++ b/IniDBBuilderPackage.cc
@@ -177,14 +177,21 @@ IniDBBuilderPackage::buildPackageInstall (const std::string& path,
   }
 }
 
+const std::string src_suffix = "-src";
+
 void
 IniDBBuilderPackage::buildPackageSource (const std::string& path,
                                          const std::string& size,
                                          char *hash,
                                          hashType type)
 {
-  /* When there is a source: line, we invent a package to contain the source,
-     and make it the source package for this package. */
+  /* When there is a source: line along with an install: line, we invent a
+     package to contain the source, and make it the source package for this
+     package.
+
+     When there's just a source: line, this is really a source package, which
+     will be referred to by a Source: line in other package(s).
+  */
 
   /* create a source package version */
   SolverPool::addPackageData cspv = cbpv;
@@ -218,11 +225,21 @@ IniDBBuilderPackage::buildPackageSource (const std::string& path,
     break;
   }
 
+  /* We make the source package name by appending '-src', unless it's already
+     there.  This handles both cases above (assuming source package don't have
+     any install: lines, which should be true!) */
+  std::string source_name;
+  int pos = name.size() - src_suffix.size();
+  if ((pos > 0) && (name.compare(pos, src_suffix.size(), src_suffix) == 0))
+    source_name = name;
+  else
+    source_name = name + src_suffix;
+
   packagedb db;
-  packageversion spkg_id = db.addSource (name + "-src", cspv);
+  packageversion spkg_id = db.addSource (source_name, cspv);
 
   /* create relationship between binary and source packageversions */
-  cbpv.spkg = PackageSpecification(name + "-src");
+  cbpv.spkg = PackageSpecification(source_name);
   cbpv.spkg_id = spkg_id;
 }
 
diff --git a/ListView.cc b/ListView.cc
index 7cc7f0f0..1bf60ea4 100644
--- a/ListView.cc
+++ b/ListView.cc
@@ -621,7 +621,7 @@ ListView::OnNotify (NMHDR *pNmHdr, LRESULT *pResult)
     }
     break;
 
-  case TTN_GETDISPINFO:
+  case TTN_GETDISPINFOW:
     {
       // convert mouse position to item/subitem
       LVHITTESTINFO lvHitTestInfo;
@@ -640,14 +640,16 @@ ListView::OnNotify (NMHDR *pNmHdr, LRESULT *pResult)
 #endif
 
       // get the tooltip text for that item/subitem
-      static StringCache<std::string> tooltip;
-      tooltip = "";
+      static StringCache<std::wstring> wtooltip;
+      std::string tooltip = "";
       if (contents)
         tooltip = (*contents)[iRow]->get_tooltip(iCol);
 
+      wtooltip = string_to_wstring(tooltip);
+
       // set the tooltip text
-      NMTTDISPINFO *pNmTTDispInfo = (NMTTDISPINFO *)pNmHdr;
-      pNmTTDispInfo->lpszText = tooltip;
+      NMTTDISPINFOW *pNmTTDispInfo = (NMTTDISPINFOW *)pNmHdr;
+      pNmTTDispInfo->lpszText = wtooltip;
       pNmTTDispInfo->hinst = NULL;
       pNmTTDispInfo->uFlags = 0;
 
diff --git a/Makefile.am b/Makefile.am
index ebb38226..ed9aaafd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -282,7 +282,7 @@ setup_version.c : Makefile
 pot:
 	cd $(srcdir) && rc2po -P res/en/res.rc res.pot
 
-LINGUAS=fr
+LINGUAS=fr zh_Hans
 
 rc2po:
 	cd $(srcdir) && \
@@ -293,7 +293,8 @@ rc2po:
 po2rc:
 	cd $(srcdir) && \
 	for l in $(LINGUAS) ; do \
-		po2rc -t res/en/res.rc --charset-output=utf-8 $$(./langopts $$l) po/$$l/ res/$$l && \
+		./langopts $$l >/dev/null && \
+		po2rc -t res/en/res.rc --charset-output=utf-8 $$(./langopts $$l) po/$$l/res.po res/$$l/res.rc && \
 		d2u -q res/$$l/res.rc ; \
 	done
 
diff --git a/desktop.cc b/desktop.cc
index 4b76568c..be7cc6ec 100644
--- a/desktop.cc
+++ b/desktop.cc
@@ -40,8 +40,8 @@
 #include "getopt++/BoolOption.h"
 #include "LogFile.h"
 
-static BoolOption NoShortcutsOption (false, 'n', "no-shortcuts", IDS_HELPTEXT_NO_SHORTCUTS);
-static BoolOption NoStartMenuOption (false, 'N', "no-startmenu", IDS_HELPTEXT_NO_STARTMENU);
+BoolOption NoShortcutsOption (false, 'n', "no-shortcuts", IDS_HELPTEXT_NO_SHORTCUTS);
+BoolOption NoStartMenuOption (false, 'N', "no-startmenu", IDS_HELPTEXT_NO_STARTMENU);
 static BoolOption NoDesktopOption (false, 'd', "no-desktop", IDS_HELPTEXT_NO_DESKTOP);
 
 /* Lines starting with '@' are conditionals - include 'N' for NT,
@@ -95,12 +95,21 @@ make_link (const std::string& linkpath,
 	       icon.c_str(), fname.c_str());
 }
 
-static const char *startmenudir()
+const char *startmenusuffix()
 {
   if (!is_64bit && (WowNativeMachine() != IMAGE_FILE_MACHINE_I386))
-    return "/Cygwin (32-bit)";
+    return " (32-bit)";
+#ifdef __x86_64__
+  if (WowNativeMachine() != IMAGE_FILE_MACHINE_AMD64)
+    return " (x86_64)";
+#endif
   else
-    return "/Cygwin";
+    return "";
+}
+
+static const char *startmenudir()
+{
+  return "/Cygwin";
 }
 
 static void
@@ -116,6 +125,7 @@ start_menu (const std::string& title, const std::string& target,
 			      CSIDL_PROGRAMS, &id);
   SHGetPathFromIDList (id, path);
   strncat (path, startmenudir(), MAX_PATH - strlen(path) - 1);
+  strncat (path, startmenusuffix(), MAX_PATH - strlen(path) - 1);
   LogBabblePrintf ("Program directory for program link: %s", path);
   make_link (path, title, target, arg, iconpath);
 }
@@ -302,6 +312,7 @@ check_startmenu (const std::string title, const std::string target)
   SHGetPathFromIDList (id, path);
   LogBabblePrintf ("Program directory for program link: %s", path);
   strcat (path, startmenudir());
+  strcat (path, startmenusuffix());
   std::string fname = std::string(path) + "/" + title + ".lnk";
 
   if (_access (fname.c_str(), 0) == 0)
diff --git a/desktop.h b/desktop.h
index 71436e81..d4ce72de 100644
--- a/desktop.h
+++ b/desktop.h
@@ -20,6 +20,7 @@
 // of "create desktop icon" and "add to start menu".
 
 #include "proppage.h"
+#include "getopt++/BoolOption.h"
 
 // WM_APP through WM_APP+7: see threebar.h
 #define WM_APP_UNATTENDED_FINISH WM_APP+8
@@ -42,4 +43,9 @@ public:
   virtual bool OnMessageApp (UINT uMsg, WPARAM wParam, LPARAM lParam);
 };
 
+const char *startmenusuffix();
+
+extern BoolOption NoShortcutsOption;
+extern BoolOption NoStartMenuOption;
+
 #endif /* SETUP_DESKTOP_H */
diff --git a/langopts b/langopts
index a6495127..6fc84c49 100755
--- a/langopts
+++ b/langopts
@@ -5,6 +5,10 @@ case $1 in
         lang="LANG_FRENCH"
         sublang="SUBLANG_FRENCH"
         ;;
+    zh_Hans)
+        lang="LANG_CHINESE"
+        sublang="SUBLANG_CHINESE_SIMPLIFIED"
+        ;;
     *)
         echo "Don't know how to map locale '$1' to LANG/SUBLANG" 1>&2
         exit 1
diff --git a/main.cc b/main.cc
index 13d3f8eb..1d65d536 100644
--- a/main.cc
+++ b/main.cc
@@ -355,22 +355,21 @@ WinMain (HINSTANCE h,
                   MB_ICONEXCLAMATION | MB_OK);
             Logger ().exit (1, false);
           }
-      }
 
-    /* Plans are to deprecate Windows 7 & 8 sometime during the Cygwin DLL 3.4
-       lifetime */
-#if 0
-    /* Warn if Windows version is deprecated for Cygwin */
-    if (!DeprecatedOption && !elevate)
-      {
-        else if ((OSMajorVersion () == 6) && (OSMinorVersion() < 3))
-          mbox (NULL, IDS_DEPRECATED_WINDOWS_VERSION,
-                MB_ICONEXCLAMATION | MB_OK | MB_DSA_CHECKBOX);
+        /*
+          Warn if Windows version is deprecated for Cygwin: Current plans are to
+          deprecate Windows 7 & 8 sometime during the Cygwin DLL 3.4 lifetime
+        */
+        if (!DeprecatedOption && !elevate)
+          {
+            if ((OSMajorVersion () == 6) && (OSMinorVersion() < 3))
+              mbox (NULL, IDS_DEPRECATED_WINDOWS_VERSION,
+                    MB_ICONEXCLAMATION | MB_OK | MB_DSA_CHECKBOX);
+          }
       }
-#endif
 
     /* Set default DACL and Group. */
-    nt_sec.setDefaultSecurity ((root_scope == IDC_ROOT_SYSTEM));
+    nt_sec.setDefaultSecurity ();
 
     /*
        If --symlink-type option isn't given, look for winsymlinks in CYGWIN
diff --git a/mount.cc b/mount.cc
index 01363965..a38f52ce 100644
--- a/mount.cc
+++ b/mount.cc
@@ -140,10 +140,6 @@ create_install_root ()
 						      : "LOCAL_MACHINE\\")
 		      << buf << "\\rootdir = \"" << get_root_dir () << "\""
 		      << endLog;
-
-  // The mount table is already in the right shape at this point.
-  // Reading it again is not necessary.
-  //read_mounts (std::string ());
 }
 
 inline char *
@@ -316,8 +312,6 @@ read_mounts (const std::string val)
     }
   got_usr_bin = got_usr_lib = false;
 
-  root_scope = (nt_sec.isRunAsAdmin ())? IDC_ROOT_SYSTEM : IDC_ROOT_USER;
-
   if (val.size ())
     {
       /* Cygwin rootdir always < MAX_PATH. */
@@ -353,7 +347,6 @@ read_mounts (const std::string val)
 	    {
 	      m->native = std::string (aBuffer);
 	      m->posix = "/";
-	      root_scope = isuser ? IDC_ROOT_USER : IDC_ROOT_SYSTEM;
 	      root_here = m++;
 	      from_fstab (m, root_here->native);
 	      add_usr_mnts (m);
@@ -376,6 +369,29 @@ read_mounts (const std::string val)
     }
 }
 
+// set default root_scope: USER if only HKEY_CURRENT_USER registry key exists,
+// otherwise SYSTEM.
+void set_default_root_scope()
+{
+  root_scope = IDC_ROOT_SYSTEM;
+
+  char buf[10000];
+  for (int isuser = 0; isuser <= 1; isuser++)
+    {
+      snprintf (buf, sizeof(buf), "Software\\%s\\%s",
+                CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+                CYGWIN_INFO_CYGWIN_SETUP_REGISTRY_NAME);
+      HKEY key = isuser ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE;
+      if (RegOpenKeyEx (key, buf, 0, KEY_ALL_ACCESS | SETUP_KEY_WOW64,
+                        &key) == ERROR_SUCCESS)
+        {
+          RegCloseKey (key);
+          root_scope = isuser ? IDC_ROOT_USER : IDC_ROOT_SYSTEM;
+          break;
+        }
+    }
+}
+
 void
 set_root_dir (const std::string val)
 {
diff --git a/mount.h b/mount.h
index a7d7e393..c451a02d 100644
--- a/mount.h
+++ b/mount.h
@@ -15,11 +15,6 @@
 
 #ifndef SETUP_MOUNT_H
 #define SETUP_MOUNT_H
-
-/* Finds the existing root mount, or returns NULL.  istext is set to
-   nonzero if the existing mount is a text mount, else zero for
-   binary. */
-
 #include <string>
 #include "String++.h"
 
@@ -27,9 +22,7 @@
 
 void create_install_root ();
 void read_mounts (const std::string);
-
-/* Sets the cygdrive flags.  Used to make the automounted drives' binary/text
-mode consistent with the standard Cygwin mounts. */
+void set_default_root_scope();
 
 std::string cygpath (const std::string&);
 void set_root_dir (const std::string);
diff --git a/po/zh_Hans/res.po b/po/zh_Hans/res.po
new file mode 100644
index 00000000..9c808b0f
--- /dev/null
+++ b/po/zh_Hans/res.po
@@ -0,0 +1,1454 @@
+#. extracted from res/en/res.rc
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-08-27 12:54+0100\n"
+"PO-Revision-Date: 2022-12-10 14:47+0000\n"
+"Last-Translator: Xiang Heng Wei <yylteam@hotmail.com>\n"
+"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
+"cygwin-setup/cygwin-setup/zh_Hans/>\n"
+"Language: zh_Hans\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Accelerator-Marker: &\n"
+"X-Generator: Weblate 4.15-dev\n"
+"X-Merge-On: location\n"
+
+#: DIALOG.IDD_SOURCE.CAPTION
+msgid "Cygwin Setup - Choose Installation Type"
+msgstr "Cygwin 安装程序 - 选择安装类型"
+
+#: DIALOG.IDD_SOURCE.CONTROL.IDC_SOURCE_NETINST
+msgid ""
+"&Install from Internet\n"
+"(downloaded files will be kept for future re-use)"
+msgstr ""
+"从互联网安装\n"
+"(下载的文件将保留以备将来重复使用)(&I)"
+
+#: DIALOG.IDD_SOURCE.CONTROL.IDC_SOURCE_DOWNLOAD
+msgid "&Download Without Installing"
+msgstr "下载而不安装(&D)"
+
+#: DIALOG.IDD_SOURCE.CONTROL.IDC_SOURCE_LOCALDIR
+msgid "Install from &Local Directory"
+msgstr "从本地目录安装(&L)"
+
+#: DIALOG.IDD_SOURCE.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Choose A Download Source"
+msgstr "选择下载源"
+
+#: DIALOG.IDD_SOURCE.LTEXT.IDC_SOURCE_SUBTEXT
+msgid ""
+"Choose whether to install or download from the internet, or install from "
+"files in a local directory."
+msgstr "选择是从互联网安装或下载,还是从本地目录中的文件安装。"
+
+#: DIALOG.IDD_VIRUS.CAPTION
+msgid "Cygwin Setup - Disable Virus Scanner?"
+msgstr "Cygwin 安装程序 - 禁用病毒扫描程序?"
+
+#: DIALOG.IDD_VIRUS.CONTROL.IDC_DISABLE_AV
+msgid "&Disable Virus scanner"
+msgstr "禁用病毒扫描程序(&D)"
+
+#: DIALOG.IDD_VIRUS.CONTROL.IDC_LEAVE_AV
+msgid "&Leave Virus scanner alone"
+msgstr "保留病毒扫描程序(&L)"
+
+#: DIALOG.IDD_VIRUS.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Choose whether to disable your virus scanner while installing."
+msgstr "选择是否在安装时禁用病毒扫描程序。"
+
+#: DIALOG.IDD_VIRUS.LTEXT.IDC_STATIC
+msgid ""
+"Some Antivirus programs, notably McAfee, cause a blue screen on Windows XP "
+"computers during installation of Cygwin."
+msgstr "某些防病毒程序(尤其是 McAfee)会在安装 Cygwin 期间导致 Windows XP "
+"计算机出现蓝屏。"
+
+#: DIALOG.IDD_VIRUS.LTEXT.IDC_STATIC
+msgid ""
+"One that may be a problem has been detected. Cygwin setup can disable this "
+"during the installation process, and re-enable it when the install is "
+"complete."
+msgstr "已检测到可能存在问题的一个。 Cygwin "
+"安装程序可以在安装过程中禁用它,并在安装完成后重新启用它。"
+
+#: DIALOG.IDD_LOCAL_DIR.CAPTION
+msgid "Cygwin Setup - Select Local Package Directory"
+msgstr "Cygwin 安装程序 - 选择本地软件包目录"
+
+#: DIALOG.IDD_LOCAL_DIR.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Select Local Package Directory"
+msgstr "选择本地软件包目录"
+
+#: DIALOG.IDD_LOCAL_DIR.LTEXT.IDC_LOCAL_DIR_DOWNLOAD_DESC
+msgid ""
+"Select a directory where you want Setup to store the installation files it "
+"downloads.  The directory will be created if it does not already exist."
+msgstr "选择希望安装程序存储其下载的安装文件的目录。 "
+"如果该目录尚不存在,则将创建该目录。"
+
+#: DIALOG.IDD_LOCAL_DIR.LTEXT.IDC_LOCAL_DIR_INSTALL_DESC
+msgid ""
+"Select a directory where Setup should look for downloaded installation files."
+msgstr "选择安装程序应在其中查找下载的安装文件的目录。"
+
+#: DIALOG.IDD_LOCAL_DIR.GROUPBOX.IDC_LOCALDIR_GRP
+msgid "Local Package Directory"
+msgstr "本地软件包目录"
+
+#: DIALOG.IDD_LOCAL_DIR.PUSHBUTTON.IDC_LOCAL_DIR_BROWSE
+msgctxt "DIALOG.IDD_LOCAL_DIR.PUSHBUTTON.IDC_LOCAL_DIR_BROWSE"
+msgid "B&rowse..."
+msgstr "浏览(&R)..."
+
+#: DIALOG.IDD_ROOT.CAPTION
+msgid "Cygwin Setup - Choose Installation Directory"
+msgstr "Cygwin 安装程序 - 选择安装目录"
+
+#: DIALOG.IDD_ROOT.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Select Root Install Directory"
+msgstr "选择根安装目录"
+
+#: DIALOG.IDD_ROOT.LTEXT.IDC_ROOTDIR_SUBTEXT
+msgid ""
+"Select the directory where you want to install Cygwin.  Also choose a few "
+"installation parameters."
+msgstr "选择要安装 Cygwin 的目录。还需要选择几个安装参数。"
+
+#: DIALOG.IDD_ROOT.GROUPBOX.IDC_ROOTDIR_GRP
+msgid "Root Directory"
+msgstr "根目录"
+
+#: DIALOG.IDD_ROOT.PUSHBUTTON.IDC_ROOT_BROWSE
+msgctxt "DIALOG.IDD_ROOT.PUSHBUTTON.IDC_ROOT_BROWSE"
+msgid "B&rowse..."
+msgstr "浏览(&R)..."
+
+#: DIALOG.IDD_ROOT.GROUPBOX.IDC_INSTALLFOR_GRP
+msgid "Install For"
+msgstr "为以下用户安装"
+
+#: DIALOG.IDD_ROOT.CONTROL.IDC_ROOT_SYSTEM
+msgid "&All Users (RECOMMENDED)"
+msgstr "所有用户(推荐)(&A)"
+
+#: DIALOG.IDD_ROOT.CONTROL.IDC_ROOT_USER
+msgid "Just &Me"
+msgstr "仅为我安装(&M)"
+
+#: DIALOG.IDD_ROOT.LTEXT.IDC_ALLUSERS_TEXT
+msgid "Cygwin will be available to all users of the system."
+msgstr "Cygwin 将可供系统的所有用户使用。"
+
+#: DIALOG.IDD_ROOT.LTEXT.IDC_JUSTME_TEXT
+msgid ""
+"Cygwin will still be available to all users, but Desktop Icons, Cygwin Menu "
+"Entries, and important Installer information are only available to the "
+"current user.  Only select this if you lack Administrator privileges or if "
+"you have specific needs."
+msgstr ""
+"Cygwin仍将对所有用户可用,但桌面图标,Cygwin菜单条目和重要的安装程序信息仅对"
+"当前用户可用。 仅当您缺少管理员权限或有特定需求时,才选择此选项。"
+
+#: DIALOG.IDD_SITE.CAPTION
+msgid "Cygwin Setup - Choose Download Site(s)"
+msgstr "Cygwin 设置 - 选择下载站点"
+
+#: DIALOG.IDD_SITE.LTEXT.IDC_STATIC
+msgid "Available Download Sites:"
+msgstr "可用的下载站点:"
+
+#: DIALOG.IDD_SITE.LTEXT.IDC_STATIC
+msgid "Choose a site from this list, or add your own sites to the list."
+msgstr "从此列表中选择一个网站,或将您自己的网站添加到列表中。"
+
+#: DIALOG.IDD_SITE.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Choose A Download Site"
+msgstr "选择下载站点"
+
+#: DIALOG.IDD_SITE.LTEXT.IDC_SITE_USERURL
+msgid "User URL:"
+msgstr "用户网址:"
+
+#: DIALOG.IDD_SITE.PUSHBUTTON.IDC_BUTTON_ADD_URL
+msgid "Add"
+msgstr "添加"
+
+#: DIALOG.IDD_NET.CAPTION
+msgid "Cygwin Setup - Select Connection Type"
+msgstr "Cygwin 安装程序 - 选择连接类型"
+
+#: DIALOG.IDD_NET.CONTROL.IDC_NET_PRECONFIG
+msgid "Use &System Proxy Settings"
+msgstr "使用系统代理设置(&S)"
+
+#: DIALOG.IDD_NET.CONTROL.IDC_NET_DIRECT
+msgid "&Direct Connection"
+msgstr "直接连接(&D)"
+
+#: DIALOG.IDD_NET.CONTROL.IDC_NET_PROXY
+msgid "Use HTTP/FTP &Proxy:"
+msgstr "使用 HTTP/FTP 代理(&P):"
+
+#: DIALOG.IDD_NET.RTEXT.IDC_STATIC
+msgid "Proxy &Host"
+msgstr "代理主机(&H)"
+
+#: DIALOG.IDD_NET.RTEXT.IDC_STATIC
+msgid "Por&t"
+msgstr "端口(&T)"
+
+#: DIALOG.IDD_NET.LTEXT.IDC_STATIC
+msgid ""
+"Setup needs to know how you want it to connect to the internet.  Choose the "
+"appropriate settings below."
+msgstr "安装程序需要知道您希望它如何连接到互联网。 在下面选择适当的设置。"
+
+#: DIALOG.IDD_NET.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Select Your Internet Connection"
+msgstr "选择您的互联网连接"
+
+#: DIALOG.IDD_INSTATUS.CAPTION
+msgctxt "DIALOG.IDD_INSTATUS.CAPTION"
+"DIALOG.IDD_INSTATUS.CAPTION"
+msgid "Cygwin Setup"
+msgstr "Cygwin 安装程序"
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_ACTION
+msgctxt "DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_ACTION"
+msgid "Installing..."
+msgstr "正在安装..."
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_PKG
+msgid "(PKG)"
+msgstr "(软件包)"
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_FILE
+msgid "(FILE)"
+msgstr "(文件)"
+
+#: DIALOG.IDD_INSTATUS.CONTROL.IDC_INS_DISKFULL
+msgctxt "DIALOG.IDD_INSTATUS.CONTROL.IDC_INS_DISKFULL"
+"DIALOG.IDD_INSTATUS.CONTROL.IDC_INS_DISKFULL"
+msgid "Progress1"
+msgstr "第一阶段"
+
+#: DIALOG.IDD_INSTATUS.CONTROL.IDC_INS_IPROGRESS
+msgctxt "DIALOG.IDD_INSTATUS.CONTROL.IDC_INS_IPROGRESS"
+msgid "Progress1"
+msgstr "第一阶段"
+
+#: DIALOG.IDD_INSTATUS.CONTROL.IDC_INS_PPROGRESS
+msgctxt "DIALOG.IDD_INSTATUS.CONTROL.IDC_INS_PPROGRESS"
+msgid "Progress1"
+msgstr "第一阶段"
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_BL_PACKAGE
+msgctxt "DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_BL_PACKAGE"
+msgid "Package:"
+msgstr "软件包:"
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_BL_TOTAL
+msgid "Total:"
+msgstr "总计:"
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_INS_BL_DISK
+msgid "Disk:"
+msgstr "磁盘:"
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_STATIC
+msgid "This page displays the progress of the download or installation."
+msgstr "此页显示下载或安装的进度。"
+
+#: DIALOG.IDD_INSTATUS.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Progress"
+msgstr "进度"
+
+#: DIALOG.IDD_PROXY_AUTH.CAPTION
+msgid "Proxy Authentication required"
+msgstr "需要代理身份验证"
+
+#: DIALOG.IDD_PROXY_AUTH.LTEXT.IDC_STATIC
+msgid "Proxy &User ID"
+msgstr "代理用户 ID(&U)"
+
+#: DIALOG.IDD_PROXY_AUTH.LTEXT.IDC_STATIC
+msgctxt "DIALOG.IDD_PROXY_AUTH.LTEXT.IDC_STATIC"
+"DIALOG.IDD_PROXY_AUTH.LTEXT.IDC_STATIC"
+msgid "&Password"
+msgstr "密码(&P)"
+
+#: DIALOG.IDD_PROXY_AUTH.LTEXT.IDC_STATIC
+msgid "Proxy Authorization Required"
+msgstr "需要代理授权"
+
+#: DIALOG.IDD_PROXY_AUTH.DEFPUSHBUTTON.IDOK
+msgctxt "DIALOG.IDD_PROXY_AUTH.DEFPUSHBUTTON.IDOK"
+"DIALOG.IDD_PROXY_AUTH.DEFPUSHBUTTON.IDOK"
+msgid "&OK"
+msgstr "确定(&O)"
+
+#: DIALOG.IDD_PROXY_AUTH.PUSHBUTTON.IDCANCEL
+msgctxt "DIALOG.IDD_PROXY_AUTH.PUSHBUTTON.IDCANCEL"
+"DIALOG.IDD_PROXY_AUTH.PUSHBUTTON.IDCANCEL"
+"DIALOG.IDD_PROXY_AUTH.PUSHBUTTON.IDCANCEL"
+msgid "Cancel"
+msgstr "取消"
+
+#: DIALOG.IDD_NET_AUTH.CAPTION
+msgid "Server Authentication required"
+msgstr "需要服务器身份验证"
+
+#: DIALOG.IDD_NET_AUTH.LTEXT.IDC_STATIC
+msgctxt "DIALOG.IDD_NET_AUTH.LTEXT.IDC_STATIC"
+msgid "&User ID"
+msgstr "用户 ID(&U)"
+
+#: DIALOG.IDD_NET_AUTH.LTEXT.IDC_STATIC
+msgctxt "DIALOG.IDD_NET_AUTH.LTEXT.IDC_STATIC"
+msgid "&Password"
+msgstr "密码(&P)"
+
+#: DIALOG.IDD_NET_AUTH.LTEXT.IDC_STATIC
+msgid "Server Authorization Required"
+msgstr "需要服务器授权"
+
+#: DIALOG.IDD_NET_AUTH.DEFPUSHBUTTON.IDOK
+msgctxt "DIALOG.IDD_NET_AUTH.DEFPUSHBUTTON.IDOK"
+msgid "&OK"
+msgstr "确定(&O)"
+
+#: DIALOG.IDD_NET_AUTH.PUSHBUTTON.IDCANCEL
+msgctxt "DIALOG.IDD_NET_AUTH.PUSHBUTTON.IDCANCEL"
+msgid "Cancel"
+msgstr "取消"
+
+#: DIALOG.IDD_SPLASH.CAPTION
+msgctxt "DIALOG.IDD_SPLASH.CAPTION"
+msgid "Cygwin Setup"
+msgstr "Cygwin 安装程序"
+
+#: DIALOG.IDD_SPLASH.LTEXT.IDC_STATIC_WELCOME_TITLE
+msgid "Cygwin Net Release Setup Program"
+msgstr "Cygwin 网络发行版安装程序"
+
+#: DIALOG.IDD_SPLASH.LTEXT.IDC_SPLASH_TEXT
+msgid ""
+"This setup program is used for the initial installation of the Cygwin "
+"environment as well as all subsequent updates. The pages that follow will "
+"guide you through the installation.\n"
+"\n"
+"Please note that we only install a base set of packages by default.  Cygwin "
+"provides a large number of packages spanning a wide variety of purposes.\n"
+"\n"
+"You can always run this program at any time in the future to add, remove, or "
+"upgrade packages as necessary."
+msgstr ""
+"此安装程序用于 Cygwin "
+"环境的初始安装以及所有后续更新。以下页面将指导您完成安装。\n"
+"\n"
+"请注意,默认情况下,我们只安装一组基本的软件包。Cygwin "
+"提供了大量涵盖各种用途的软件包。\n"
+"\n"
+"将来可以随时运行此程序,以根据需要添加、删除或升级软件包。"
+
+#: DIALOG.IDD_DESKTOP.CAPTION
+msgid "Cygwin Setup - Installation Status and Create Icons"
+msgstr "Cygwin 安装程序 - 安装状态和创建图标"
+
+#: DIALOG.IDD_DESKTOP.CONTROL.IDC_ROOT_DESKTOP
+msgid "Create icon on &Desktop"
+msgstr "在桌面上创建图标(&D)"
+
+#: DIALOG.IDD_DESKTOP.CONTROL.IDC_ROOT_MENU
+msgid "Add icon to &Start Menu"
+msgstr "将图标添加到“开始”菜单(&S)"
+
+#: DIALOG.IDD_DESKTOP.LTEXT.IDC_DESKTOP_HEADER_INSTALL
+msgid ""
+"Tell setup if you want it to create a few icons for convenient access to the "
+"Cygwin environment."
+msgstr "告诉安装程序您是否希望它创建一些图标以便于访问 Cygwin 环境。"
+
+#: DIALOG.IDD_DESKTOP.LTEXT.IDC_DESKTOP_HEADER_TITLE_INSTALL
+msgid "Create Icons"
+msgstr "创建图标"
+
+#: DIALOG.IDD_DESKTOP.LTEXT.IDC_DESKTOP_HEADER_DOWNLOAD
+msgid "Shows installation status in download-only mode."
+msgstr "在仅下载模式下显示安装状态。"
+
+#: DIALOG.IDD_DESKTOP.LTEXT.IDC_DESKTOP_HEADER_TITLE_DOWNLOAD
+msgid "Installation complete"
+msgstr "安装完成"
+
+#: DIALOG.IDD_DESKTOP.LTEXT.IDC_STATUS_HEADER
+msgid "Installation Status"
+msgstr "安装状态"
+
+#: DIALOG.IDD_DESKTOP.LTEXT.IDC_STATUS
+msgid "Cygwin installation completed successfully."
+msgstr "Cygwin 安装成功。"
+
+#: DIALOG.IDD_FTP_AUTH.CAPTION
+msgid "FTP Authentication required"
+msgstr "需要 FTP 身份验证"
+
+#: DIALOG.IDD_FTP_AUTH.LTEXT.IDC_STATIC
+msgctxt "DIALOG.IDD_FTP_AUTH.LTEXT.IDC_STATIC"
+msgid "&User ID"
+msgstr "用户 ID(&U)"
+
+#: DIALOG.IDD_FTP_AUTH.LTEXT.IDC_STATIC
+msgctxt "DIALOG.IDD_FTP_AUTH.LTEXT.IDC_STATIC"
+msgid "&Password"
+msgstr "密码(&P)"
+
+#: DIALOG.IDD_FTP_AUTH.LTEXT.IDC_STATIC
+msgid "FTP Authorization Required"
+msgstr "需要 FTP 授权"
+
+#: DIALOG.IDD_FTP_AUTH.DEFPUSHBUTTON.IDOK
+msgctxt "DIALOG.IDD_FTP_AUTH.DEFPUSHBUTTON.IDOK"
+msgid "&OK"
+msgstr "确定(&O)"
+
+#: DIALOG.IDD_FTP_AUTH.PUSHBUTTON.IDCANCEL
+msgctxt "DIALOG.IDD_FTP_AUTH.PUSHBUTTON.IDCANCEL"
+msgid "Cancel"
+msgstr "取消"
+
+#: DIALOG.IDD_CHOOSE.CAPTION
+msgid "Cygwin Setup - Select Packages"
+msgstr "Cygwin 安装程序 - 选择软件包"
+
+#: DIALOG.IDD_CHOOSE.LTEXT.IDC_CHOOSE_VIEWCAPTION
+msgid "&View"
+msgstr "查看(&V)"
+
+#: DIALOG.IDD_CHOOSE.RTEXT.IDC_STATIC
+msgid "&Search"
+msgstr "搜索(&S)"
+
+#: DIALOG.IDD_CHOOSE.CONTROL.IDC_CHOOSE_DO_SEARCH
+msgid "Search "
+msgstr "搜索 "
+
+#: DIALOG.IDD_CHOOSE.PUSHBUTTON.IDC_CHOOSE_CLEAR_SEARCH
+msgid "&Clear"
+msgstr "清除(&C)"
+
+#: DIALOG.IDD_CHOOSE.CONTROL.IDC_CHOOSE_KEEP
+msgid "&Keep"
+msgstr "保留(&K)"
+
+#: DIALOG.IDD_CHOOSE.CONTROL.IDC_CHOOSE_BEST
+msgid "&Best"
+msgstr "最佳(&B)"
+
+#: DIALOG.IDD_CHOOSE.CONTROL.IDC_CHOOSE_SYNC
+msgid "&Sync"
+msgstr "同步(&S)"
+
+#: DIALOG.IDD_CHOOSE.CONTROL.IDC_CHOOSE_EXP
+msgid "&Test"
+msgstr "测试(&T)"
+
+#: DIALOG.IDD_CHOOSE.CONTROL.IDC_CHOOSE_HIDE
+msgid "&Hide obsolete packages"
+msgstr "隐藏过时的软件包(&H)"
+
+#: DIALOG.IDD_CHOOSE.LTEXT.IDC_CHOOSE_INST_TEXT_DOWNLOAD
+msgid "Select packages to download."
+msgstr "选择要下载的软件包。"
+
+#: DIALOG.IDD_CHOOSE.LTEXT.IDC_CHOOSE_INST_TEXT_INSTALL
+msgid "Select packages to install."
+msgstr "选择要安装的软件包。"
+
+#: DIALOG.IDD_CHOOSE.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Select Packages"
+msgstr "选择软件包"
+
+#: DIALOG.IDD_PREREQ.CAPTION
+msgid "Cygwin Setup - Resolving Dependencies"
+msgstr "Cygwin 安装程序 - 解决依赖关系"
+
+#: DIALOG.IDD_PREREQ.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Resolving Dependencies"
+msgstr "解决依赖关系"
+
+#: DIALOG.IDD_PREREQ.LTEXT.IDC_STATIC
+msgid "The following problems occured trying to satisfy dependencies."
+msgstr "在试图满足依赖关系时发生了以下问题。"
+
+#: DIALOG.IDD_PREREQ.CONTROL.IDC_PREREQ_CHECK
+msgid "&Accept default problem solutions"
+msgstr "接受默认问题解决方案(&A)"
+
+#: DIALOG.IDD_CONFIRM.CAPTION
+msgid "Cygwin Setup - Review and confirm changes"
+msgstr "Cygwin 安装程序 - 查看并确认更改"
+
+#: DIALOG.IDD_CONFIRM.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Review and confirm changes"
+msgstr "查看并确认更改"
+
+#: DIALOG.IDD_DROPPED.CAPTION
+msgid "Cygwin Setup - Use dropped mirrors?"
+msgstr "Cygwin 安装程序 - 使用齐用的镜像?"
+
+#: DIALOG.IDD_DROPPED.LTEXT.IDC_STATIC
+msgid "Warning:"
+msgstr "警告:"
+
+#: DIALOG.IDD_DROPPED.LTEXT.IDC_STATIC
+msgid ""
+"One or more mirrors you have selected is/are not on the list of official "
+"Cygwin mirrors any more. It/They may be out of date or missing some packages."
+"\n"
+"This affects the following mirror(s):"
+msgstr ""
+"您选择的一个或多个镜像不再在官方 Cygwin "
+"镜像列表中。它/它们可能已过时或缺少某些软件包。\n"
+"这会影响以下镜像:"
+
+#: DIALOG.IDD_DROPPED.LTEXT.IDC_STATIC
+msgid ""
+"If you experience installation problems consider trying official mirrors "
+"only.\n"
+"\n"
+"Do you want to continue, using this/these mirror(s)?"
+msgstr ""
+"如果您遇到安装问题,请考虑仅尝试官方镜像。\n"
+"\n"
+"是否要使用此镜像继续?"
+
+#: DIALOG.IDD_DROPPED.CONTROL.IDC_DROP_NOWARN
+msgid "&Don't warn me about this/these mirror(s) again"
+msgstr "不要再警告我这个/这些镜像(&D)"
+
+#: DIALOG.IDD_DROPPED.PUSHBUTTON.IDYES
+msgid "&Yes"
+msgstr "是(&Y)"
+
+#: DIALOG.IDD_DROPPED.DEFPUSHBUTTON.IDNO
+msgid "&No"
+msgstr "否(&N)"
+
+#: DIALOG.IDD_DOWNLOAD_ERROR.CAPTION
+msgid "Download Incomplete"
+msgstr "下载不完整"
+
+#: DIALOG.IDD_DOWNLOAD_ERROR.LTEXT.IDC_STATIC
+msgid "The following package(s) had download errors:"
+msgstr "以下软件包出现下载错误:"
+
+#: DIALOG.IDD_DOWNLOAD_ERROR.LTEXT.IDC_STATIC
+msgid ""
+"Select 'Retry' to retry the download, 'Back' to return to the package "
+"selection page, 'Continue' to go on anyway (NOT RECOMMENDED), or 'Cancel' to "
+"exit."
+msgstr "选择“重试”以重试下载,“返回”以返回软件包选择页面,“继续”以继续(不推荐),或“"
+"取消”以退出。"
+
+#: DIALOG.IDD_DOWNLOAD_ERROR.DEFPUSHBUTTON.IDRETRY
+msgctxt "DIALOG.IDD_DOWNLOAD_ERROR.DEFPUSHBUTTON.IDRETRY"
+msgid "&Retry"
+msgstr "重试(&R)"
+
+#: DIALOG.IDD_DOWNLOAD_ERROR.PUSHBUTTON.IDC_BACK
+msgid "&Back"
+msgstr "返回(&B)"
+
+#: DIALOG.IDD_DOWNLOAD_ERROR.PUSHBUTTON.IDIGNORE
+msgctxt "DIALOG.IDD_DOWNLOAD_ERROR.PUSHBUTTON.IDIGNORE"
+msgid "&Continue"
+msgstr "继续(&C)"
+
+#: DIALOG.IDD_DOWNLOAD_ERROR.PUSHBUTTON.IDABORT
+msgctxt "DIALOG.IDD_DOWNLOAD_ERROR.PUSHBUTTON.IDABORT"
+msgid "Cancel"
+msgstr "取消"
+
+#: DIALOG.IDD_POSTINSTALL.CAPTION
+msgid "Cygwin Setup - Running postinstall scripts"
+msgstr "Cygwin 安装程序 - 运行安装后脚本"
+
+#: DIALOG.IDD_POSTINSTALL.LTEXT.IDC_STATIC_HEADER_TITLE
+msgid "Postinstall script errors"
+msgstr "安装后脚本错误"
+
+#: DIALOG.IDD_POSTINSTALL.LTEXT.IDC_STATIC
+msgid ""
+"These do not necessarily mean that affected packages will fail to function "
+"properly, but please check /var/log/setup.log.full and report any problems."
+msgstr "这些并不一定意味着受影响的软件包将无法正常运行,但请检查 /var/log/"
+"setup.log.full 并报告任何问题。"
+
+#: DIALOG.IDD_FILE_INUSE.CAPTION
+msgid "In-use file detected"
+msgstr "检测到正在使用的文件"
+
+#: DIALOG.IDD_FILE_INUSE.LTEXT.IDC_FILE_INUSE_MSG
+msgctxt "DIALOG.IDD_FILE_INUSE.LTEXT.IDC_FILE_INUSE_MSG"
+msgid "Unable to extract"
+msgstr "无法解压缩"
+
+#: DIALOG.IDD_FILE_INUSE.LTEXT.IDC_STATIC
+msgid "The file is in use by the following processes:"
+msgstr "以下进程正在使用该文件:"
+
+#: DIALOG.IDD_FILE_INUSE.LTEXT.IDC_FILE_INUSE_HELP_0
+msgid ""
+"Select 'Retry' to retry, select 'Stop' to stop processes and retry, or "
+"select 'Continue' to go on anyway (the file will be updated after a reboot)."
+msgstr "选择“重试”以重试,选择“停止”以停止进程并重试,或选择“继续”以继续(文件将在重"
+"启后更新)。"
+
+#: DIALOG.IDD_FILE_INUSE.LTEXT.IDC_FILE_INUSE_HELP_1
+msgid ""
+"Select 'Retry' to retry, select 'Kill' to kill processes and retry, or "
+"select 'Continue' to go on anyway (the file will be updated after a reboot)."
+msgstr "选择“重试”以重试,选择“终止”以终止进程并重试,或选择“继续”以继续(文件将在重"
+"新启动后更新)。"
+
+#: DIALOG.IDD_FILE_INUSE.LTEXT.IDC_FILE_INUSE_HELP_2
+msgid ""
+"Select 'Retry' to retry, select 'Kill' to forcibly kill all processes and "
+"retry, or select 'Continue' to go on anyway (the file will be updated after "
+"a reboot)."
+msgstr "选择“重试”以重试,选择“终止”以强制终止所有进程并重试,或选择“继续”以继续(文"
+"件将在重启后更新)。"
+
+#: DIALOG.IDD_FILE_INUSE.PUSHBUTTON.IDIGNORE
+msgctxt "DIALOG.IDD_FILE_INUSE.PUSHBUTTON.IDIGNORE"
+msgid "&Retry"
+msgstr "重试(&R)"
+
+#: DIALOG.IDD_FILE_INUSE.DEFPUSHBUTTON.IDRETRY
+msgid "&Stop Processes"
+msgstr "停止进程(&S)"
+
+#: DIALOG.IDD_FILE_INUSE.PUSHBUTTON.IDCONTINUE
+msgctxt "DIALOG.IDD_FILE_INUSE.PUSHBUTTON.IDCONTINUE"
+msgid "&Continue"
+msgstr "继续(&C)"
+
+#: STRINGTABLE.IDS_ROOT_SLASH
+msgid ""
+"Warning: we recommend you do not use the root of your hard drive as the "
+"cygwin root, to prevent possible conflicts with other programs.  Proceed "
+"anyway?"
+msgstr "警告:我们建议您不要将硬盘驱动器的根用作 cygwin "
+"根目录,以防止与其他程序发生冲突。 继续吗?"
+
+#: STRINGTABLE.IDS_ROOT_SPACE
+msgid ""
+"You should not choose a root path that include spaces in directory names.  "
+"Proceed anyway?"
+msgstr "不应选择在目录名称中包含空格的根路径。 还是继续?"
+
+#: STRINGTABLE.IDS_ERR_OPEN_WRITE
+msgid "Can't open %s for writing: %s"
+msgstr "无法打开 %s 进行写入: %s"
+
+#: STRINGTABLE.IDS_SETUPINI_MISSING
+msgid "Unable to get %s from <%s>"
+msgstr "无法从 %s 获取 <%s>"
+
+#: STRINGTABLE.IDS_OLD_SETUPINI
+msgid ""
+"This setup.ini is older than the one you used last time you installed "
+"cygwin.  Proceed anyway?"
+msgstr "这个 setup.ini 比你上次安装 cygwin 时使用的旧。仍要继续?"
+
+#: STRINGTABLE.IDS_NOTHING_INSTALLED
+msgid "Nothing needed to be installed"
+msgstr "无需安装"
+
+#: STRINGTABLE.IDS_INSTALL_COMPLETE
+msgid "Installation Complete"
+msgstr "安装完成"
+
+#: STRINGTABLE.IDS_REBOOT_REQUIRED
+msgid ""
+"In-use files have been replaced. You need to reboot as soon as possible to "
+"activate the new versions. Cygwin may operate incorrectly until you reboot."
+msgstr "正在使用的文件已被替换。您需要尽快重新启动才能激活新版本。Cygwin "
+"可能会错误地运行,直到您重新启动。"
+
+#: STRINGTABLE.IDS_ERR_OPEN_READ
+msgid "Can't open %s for reading: %s"
+msgstr "无法打开 %s 进行读取: %s"
+
+#: STRINGTABLE.IDS_ROOT_ABSOLUTE
+msgid ""
+"The install directory must be absolute, with both a drive letter and leading "
+"slash, like C:\\Cygwin"
+msgstr "安装目录必须是绝对目录,同时包含驱动器号和前导斜杠,例如 C:\\Cygwin"
+
+#: STRINGTABLE.IDS_DOWNLOAD_COMPLETE
+msgid "Download Complete"
+msgstr "下载完成"
+
+#: STRINGTABLE.IDS_NOLOGFILE
+msgid "Cannot open log file %s for writing"
+msgstr "无法打开日志文件 %s 进行写入"
+
+#: STRINGTABLE.IDS_UNINSTALL_COMPLETE
+msgid "Uninstalls complete."
+msgstr "卸载完成。"
+
+#: STRINGTABLE.IDS_ERR_CHDIR
+msgid "Could not change dir to %s: %s [%.8x]"
+msgstr "无法将目录更改为 %s: %s [%.8x]"
+
+#: STRINGTABLE.IDS_OLD_SETUP_VERSION
+msgid ""
+"This setup is version %s, but setup.ini claims version %s is available.\n"
+"You might want to upgrade to get the latest features and bug fixes."
+msgstr ""
+"此安装程序是版本 %s,但 setup.ini 声称版本 %s 可用。\n"
+"您可能想要升级以获得最新的功能和错误修复。"
+
+#: STRINGTABLE.IDS_DOWNLOAD_INCOMPLETE
+msgid "Download Incomplete.  Try again?"
+msgstr "下载不完整。是否重试?"
+
+#: STRINGTABLE.IDS_DOWNLOAD_INCOMPLETE_EXIT
+msgid "Download incomplete.  Check %s for details"
+msgstr "下载不完整。 查看 %s 以了解详细信息"
+
+#: STRINGTABLE.IDS_INSTALL_ERROR
+msgid "Installation error (%s), Continue with other packages?"
+msgstr "安装错误 (%s),是否继续安装其他软件包?"
+
+#: STRINGTABLE.IDS_INSTALL_INCOMPLETE
+msgid "Installation incomplete.  Check %s for details"
+msgstr "安装未完成。查看 %s 以了解详细信息"
+
+#: STRINGTABLE.IDS_CORRUPT_PACKAGE
+msgid "Package %s has a corrupt local copy, please remove and retry."
+msgstr "软件包 %s 具有损坏的本地副本,请删除并重试。"
+
+#: STRINGTABLE.IDS_QUERY_CORRUPT
+msgid "The file %s is corrupt.  Delete it and download again?"
+msgstr "文件 %s 已损坏。是否删除它并再次下载?"
+
+#: STRINGTABLE.IDS_SKIP_PACKAGE
+msgid ""
+"%s\n"
+"Do you want to skip this package ?"
+msgstr ""
+"%s\n"
+"您想跳过这个软件包吗?"
+
+#: STRINGTABLE.IDS_UNCAUGHT_EXCEPTION
+msgid ""
+"Fatal Error: Uncaught Exception\n"
+"Thread: %s\n"
+"Type: %s\n"
+"Message: %s"
+msgstr ""
+"致命错误:未捕获的异常\n"
+"线程: %s\n"
+"类型: %s\n"
+"消息: %s"
+
+#: STRINGTABLE.IDS_UNCAUGHT_EXCEPTION_WITH_ERRNO
+msgid ""
+"Fatal Error: Uncaught Exception\n"
+"Thread: %s\n"
+"Type: %s\n"
+"Message: %s\n"
+"AppErrNo: %d"
+msgstr ""
+"致命错误:未捕获的异常\n"
+"线程: %s\n"
+"类型: %s\n"
+"消息: %s\n"
+"应用错误编号: %d"
+
+#: STRINGTABLE.IDS_TRUSTKEEP_TOOLTIP
+msgid ""
+"Sets all packages to their currently installed version.  This is equivalent "
+"to telling setup not to make any changes to any package."
+msgstr "将所有软件包设置为其当前安装的版本。 "
+"这相当于告诉安装程序不要对任何软件包进行任何更改。"
+
+#: STRINGTABLE.IDS_TRUSTCURR_TOOLTIP
+msgid "Sets all packages to the best version available (RECOMMENDED)."
+msgstr "将所有软件包设置为可用的最佳版本(推荐)。"
+
+#: STRINGTABLE.IDS_TRUSTSYNC_TOOLTIP
+msgid ""
+"Sets all packages to the version available from the package repository, "
+"downgrading if necessary."
+msgstr "将所有软件包设置为软件包存储库中可用的版本,必要时降级。"
+
+#: STRINGTABLE.IDS_TRUSTEXP_TOOLTIP
+msgid "Enable test packages."
+msgstr "启用测试软件包。"
+
+#: STRINGTABLE.IDS_VIEWBUTTON_TOOLTIP
+msgid ""
+"Select the package view.  This determines which packages are shown below.\n"
+"\n"
+"Category: Group by package category.  Click on '+' to expand.\n"
+"\n"
+"Full: Show all packages.\n"
+"\n"
+"Pending: Show only packages that are about to be installed, removed, or "
+"upgraded.  This tells you what is going to change when you press 'Next'.\n"
+"\n"
+"Up To Date: Show installed packages that need no action because they are at "
+"the desired version already.\n"
+"\n"
+"Not installed: Show packages that are are not currently installed and "
+"haven't been selected for installation.\n"
+"\n"
+"Picked: Show installed packages that were selected, not installed as a "
+"dependency.\n"
+"\n"
+"Removable: Show installed packages that were selected and could be safely "
+"removed.  No other installed or selected packages depend on these packages.\n"
+"\n"
+"Unneeded: Show automatically installed packages that could now be safely "
+"removed.  Other installed or selected packages no longer depend on these "
+"packages."
+msgstr ""
+"选择软件包视图。 这决定了下面显示哪些包。\n"
+"\n"
+"类别:按软件包类别分组。 单击“+”展开。\n"
+"\n"
+"完整:显示所有软件包。\n"
+"\n"
+"挂起:仅显示即将安装、删除或升级的包。 这告诉您按“下一步”时将发生什么变化。\n"
+"\n"
+"最新:显示不需要执行任何操作的已安装软件包,因为它们已经处于所需版本。\n"
+"\n"
+"未安装:显示当前未安装且尚未选择安装的包。\n"
+"\n"
+"已选取:显示已选择的已安装包,但未作为依赖项安装。\n"
+"\n"
+"可移动:显示已选择且可以安全删除的已安装软件包。 "
+"没有其他已安装或选定的软件包依赖于这些软件包。\n"
+"\n"
+"不需要:显示现在可以安全删除的自动安装的软件包。 "
+"其他已安装或选定的软件包不再依赖于这些软件包。"
+
+#: STRINGTABLE.IDS_HIDEOBS_TOOLTIP
+msgid ""
+"If selected, setup will hide packages in categories with names that begin "
+"with '_'.  Such packages are usually empty placeholders for packages that "
+"have been removed or renamed, or are infrastructure packages that are "
+"handled automatically."
+msgstr "如果选中,安装程序将隐藏名称以“_”开头的类别中的软件包。 此类软件包通常是已删"
+"除或重命名的软件包的空占位符,或者是自动处理的基础结构软件包。"
+
+#: STRINGTABLE.IDS_SIG_INVALID
+msgid ""
+"Mirror Error:  Setup.ini signature %s from %s failed to verify.\n"
+"Possible corrupt mirror?  Setup.ini rejected."
+msgstr ""
+"镜像错误:来自 %s 的 Setup.ini 签名 %s 验证失败。\n"
+"可能损坏镜像? Setup.ini 被拒绝。"
+
+#: STRINGTABLE.IDS_CRYPTO_ERROR
+msgid "Internal Error:  gcrypt library error %d %s"
+msgstr "内部错误: gcrypt 库错误 %d %s"
+
+#: STRINGTABLE.IDS_SEARCH_TOOLTIP
+msgid "Search for this string in package names."
+msgstr "在软件包名称中搜索此字符串。"
+
+#: STRINGTABLE.IDS_MAYBE_MKDIR
+msgid "Directory %s does not exist, would you like me to create it?"
+msgstr "目录 %s 不存在,是否创建它?"
+
+#: STRINGTABLE.IDS_CANT_MKDIR
+msgid "Couldn't create directory %s, sorry.  (Is drive full or read-only?)"
+msgstr "无法创建目录 %s,抱歉。(驱动器是已满还是只读?)"
+
+#: STRINGTABLE.IDS_NO_LOCALDIR
+msgid ""
+"Local package directory %s not found.\n"
+"You can still remove installed\n"
+"packages, but there will be nothing to install.\n"
+"\n"
+"Press OK if that's what you wanted\n"
+"or Cancel to choose a different directory."
+msgstr ""
+"找不到本地软件包目录 %s。\n"
+"您仍然可以删除已安装的\n"
+"软件包,但不会有任何要安装的内容。\n"
+"\n"
+"点击“确定”,如果这是你想要的\n"
+"或“取消”以选择其他目录。"
+
+#: STRINGTABLE.IDS_ELEVATED
+msgid "Hand installation over to elevated child process."
+msgstr "将安装移交给提升的子进程。"
+
+#: STRINGTABLE.IDS_INSTALLEDB_VERSION
+msgid "Unknown INSTALLED.DB version"
+msgstr "未知的 INSTALLED.DB 版本"
+
+#: STRINGTABLE.IDS_NO_MIRROR_LST
+msgid "Could not download mirror sites list"
+msgstr "无法下载镜像站点列表"
+
+#: STRINGTABLE.IDS_PROGRESS_PROGRESS
+msgid "Progress:"
+msgstr "进度:"
+
+#: STRINGTABLE.IDS_PROGRESS_PACKAGE
+msgctxt "STRINGTABLE.IDS_PROGRESS_PACKAGE"
+msgid "Package:"
+msgstr "软件包:"
+
+#: STRINGTABLE.IDS_PROGRESS_CONNECTING
+msgid "Connecting..."
+msgstr "正在连接..."
+
+#: STRINGTABLE.IDS_PROGRESS_CHECKING
+msgid "Checking for packages to download..."
+msgstr "正在检查要下载的软件包..."
+
+#: STRINGTABLE.IDS_PROGRESS_DOWNLOADING
+msgid "Downloading..."
+msgstr "正在下载..."
+
+#: STRINGTABLE.IDS_PROGRESS_PARSING
+msgid "Parsing..."
+msgstr "正在解析..."
+
+#: STRINGTABLE.IDS_PROGRESS_PREREMOVE
+msgid "Running preremove script..."
+msgstr "正在运行预卸载脚本..."
+
+#: STRINGTABLE.IDS_PROGRESS_UNINSTALL
+msgid "Uninstalling..."
+msgstr "正在卸载..."
+
+#: STRINGTABLE.IDS_PROGRESS_INSTALL
+msgctxt "STRINGTABLE.IDS_PROGRESS_INSTALL"
+msgid "Installing..."
+msgstr "正在安装..."
+
+#: STRINGTABLE.IDS_PROGRESS_CALCULATING
+msgid "Calculating..."
+msgstr "正在计算..."
+
+#: STRINGTABLE.IDS_PROGRESS_POSTINSTALL
+msgid "Running..."
+msgstr "正在运行..."
+
+#: STRINGTABLE.IDS_PROGRESS_SOLVING
+msgid "Solving dependencies..."
+msgstr "正在解决依赖关系..."
+
+#: STRINGTABLE.IDS_ACTION_DEFAULT
+msgid "Default"
+msgstr "默认"
+
+#: STRINGTABLE.IDS_ACTION_INSTALL
+msgctxt "STRINGTABLE.IDS_ACTION_INSTALL"
+msgid "Install"
+msgstr "安装"
+
+#: STRINGTABLE.IDS_ACTION_UNINSTALL
+msgctxt "STRINGTABLE.IDS_ACTION_UNINSTALL"
+msgid "Uninstall"
+msgstr "卸载"
+
+#: STRINGTABLE.IDS_ACTION_SKIP
+msgid "Skip"
+msgstr "跳过"
+
+#: STRINGTABLE.IDS_ACTION_KEEP
+msgid "Keep"
+msgstr "保留"
+
+#: STRINGTABLE.IDS_ACTION_REINSTALL
+msgid "Reinstall"
+msgstr "重新安装"
+
+#: STRINGTABLE.IDS_ACTION_RETRIEVE
+msgid "Retrieve"
+msgstr "检索"
+
+#: STRINGTABLE.IDS_ACTION_UNKNOWN
+msgid "Unknown"
+msgstr "未知"
+
+#: STRINGTABLE.IDS_ACTION_SOURCE
+msgid "Source"
+msgstr "源"
+
+#: STRINGTABLE.IDS_VIEW_FULL
+msgid "Full"
+msgstr "完整"
+
+#: STRINGTABLE.IDS_VIEW_PENDING
+msgid "Pending"
+msgstr "待定"
+
+#: STRINGTABLE.IDS_VIEW_UPTODATE
+msgid "Up To Date"
+msgstr "最新"
+
+#: STRINGTABLE.IDS_VIEW_NOTINSTALLED
+msgid "Not Installed"
+msgstr "未安装"
+
+#: STRINGTABLE.IDS_VIEW_PICKED
+msgid "Picked"
+msgstr "已选择"
+
+#: STRINGTABLE.IDS_VIEW_REMOVABLE
+msgid "Removable"
+msgstr "可卸载"
+
+#: STRINGTABLE.IDS_VIEW_UNNEEDED
+msgid "Unneeded"
+msgstr "不需要的"
+
+#: STRINGTABLE.IDS_VIEW_CATEGORY
+msgid "Category"
+msgstr "类别"
+
+#: STRINGTABLE.IDS_COLUMN_PACKAGE
+msgid "Package"
+msgstr "软件包"
+
+#: STRINGTABLE.IDS_COLUMN_CURRENT
+msgid "Current"
+msgstr "当前"
+
+#: STRINGTABLE.IDS_COLUMN_NEW
+msgid "New"
+msgstr "新增"
+
+#: STRINGTABLE.IDS_COLUMN_SOURCE
+msgid "Src?"
+msgstr "源?"
+
+#: STRINGTABLE.IDS_COLUMN_CATEGORIES
+msgid "Categories"
+msgstr "类别"
+
+#: STRINGTABLE.IDS_COLUMN_SIZE
+msgid "Size"
+msgstr "大小"
+
+#: STRINGTABLE.IDS_COLUMN_DESCR
+msgid "Description"
+msgstr "描述"
+
+#: STRINGTABLE.IDS_MBOX_CAPTION
+msgctxt "STRINGTABLE.IDS_MBOX_CAPTION"
+msgid "Cygwin Setup"
+msgstr "Cygwin 安装程序"
+
+#: STRINGTABLE.IDS_EXTRACTION_FAILED
+msgid "Unable to extract /%s -- corrupt package?"
+msgstr "无法解压缩 /%s -- 损坏的软件包?"
+
+#: STRINGTABLE.IDS_EXTRACTION_INUSE
+msgid ""
+"Unable to extract /%s -- error writing file\n"
+"\n"
+"The file is in use or some other error occurred.\n"
+"\n"
+"Please stop all Cygwin processes and select \"\"Retry\"\", or select \""
+"\"Continue\"\" to go on anyway (the file will be updated after a reboot).\n"
+msgstr ""
+"无法解压缩 /%s -- 写入文件时出错\n"
+"\n"
+"文件正在使用中或发生了其他错误。\n"
+"\n"
+"请停止所有 Cygwin "
+"进程并选择“重试”,或选择“继续”以继续(文件将在重新启动后更新)。\n"
+
+#: STRINGTABLE.IDS_INSTALL_OLD_CYGWIN
+msgid ""
+"An old version of cygwin1.dll was found here:\n"
+"%s\n"
+"Delete?"
+msgstr ""
+"在这里发现了旧版本的 cygwin1.dll:\n"
+"%s\n"
+"是否删除?"
+
+#: STRINGTABLE.IDS_INSTALL_DELETE_OLD_CYGWIN_FAILED
+msgid ""
+"Couldn't delete file %s.\n"
+"Is the DLL in use by another application?\n"
+"You should delete the old version of cygwin1.dll at your earliest "
+"convenience."
+msgstr ""
+"无法删除文件 %s。\n"
+"DLL 是否正由另一个应用程序使用?\n"
+"您应该尽早删除旧版本的 cygwin1.dll。"
+
+#: STRINGTABLE.IDS_SHELLLINK_FAILED
+msgid ""
+"CoCreateInstance failed with error 0x%x.\n"
+"Setup will not be able to create Cygwin Icons in the Start Menu or on the "
+"Desktop."
+msgstr ""
+"CoCreateInstance 失败,错误为 0x%x。\n"
+"安装程序将无法在“开始”菜单或桌面上创建 Cygwin 图标。"
+
+#: STRINGTABLE.IDS_UNSUPPORTED_WINDOWS_VERSION
+msgid "Cygwin is not supported on this Windows version"
+msgstr "Cygwin 在此 Windows 版本上不受支持"
+
+#: STRINGTABLE.IDS_DEPRECATED_WINDOWS_VERSION
+msgid ""
+"Cygwin support for this Windows version is deprecated, and will be removed "
+"in the next major version"
+msgstr "Cygwin 对此 Windows 版本的支持已被弃用,并将在下一个主要版本中删除"
+
+#: STRINGTABLE.IDS_DEPRECATED_WINDOWS_ARCH
+msgid ""
+"Cygwin support for 32-bit Windows is deprecated, and will be removed in the "
+"next major version"
+msgstr "Cygwin 对 32 位 Windows 的支持已弃用,并将在下一个主要版本中删除"
+
+#: STRINGTABLE.IDS_MOUNT_REGISTRY_KEY_FAILED
+msgid "Couldn't create registry key to store installation path"
+msgstr "无法创建注册表项来存储安装路径"
+
+#: STRINGTABLE.IDS_NIO_ERROR
+msgid "Internet Error: %s"
+msgstr "互联网错误:%s"
+
+#: STRINGTABLE.IDS_PREREQ_UNSOLVED_PROBLEMS
+msgid ""
+"WARNING - Unsolved Problems\n"
+"\n"
+"Some packages may not work properly if you continue.\n"
+"\n"
+"Are you sure you want to proceed (NOT RECOMMENDED)?"
+msgstr ""
+"警告 - 未解决的问题\n"
+"\n"
+"如果继续,某些软件包可能无法正常工作。\n"
+"\n"
+"您确定要继续(不推荐)吗?"
+
+#: STRINGTABLE.IDS_MIXED_BITNESS_ERROR
+msgid ""
+"Target CPU mismatch\n"
+"\n"
+"You're trying to install a %s bit version of Cygwin into a directory "
+"containing a %s bit version of Cygwin.  Continuing to do so would break the "
+"existing installation.\n"
+"\n"
+"Either run setup-%s.exe to update your existing %s bit installation of "
+"Cygwin, or choose another directory for your %s bit installation."
+msgstr ""
+"目标 CPU 不匹配\n"
+"\n"
+"您正在尝试将 %s 位版本的 Cygwin 安装到包含 %s 位版本的 Cygwin 的目录中。 "
+"继续这样做会破坏现有安装。\n"
+"\n"
+"运行 setup-%s.exe 以更新 Cygwin 的现有 %s 位安装,或为 %s "
+"位安装选择其他目录。"
+
+#: STRINGTABLE.IDS_GET_SITELIST_ERROR
+msgid ""
+"Can't get list of download sites.\n"
+"Make sure your network settings are correct and try again."
+msgstr ""
+"无法获取下载站点列表。\n"
+"请确保您的网络设置正确,然后重试。"
+
+#: STRINGTABLE.IDS_CONFIRM_EXIT
+msgid ""
+"Are you sure you want to exit setup? Any current download or installation "
+"will be aborted."
+msgstr "是否确实要退出安装程序?任何当前的下载或安装都将中止。"
+
+#: STRINGTABLE.IDS_CONTINUE
+msgid "Continue"
+msgstr "继续"
+
+#: STRINGTABLE.IDS_CHOOSER_EMPTY_NO_PACKAGES
+msgid "No packages found."
+msgstr "未发现软件包。"
+
+#: STRINGTABLE.IDS_CHOOSER_EMPTY_DOWNLOAD
+msgid "Nothing to download."
+msgstr "没有可下载的内容。"
+
+#: STRINGTABLE.IDS_CHOOSER_EMPTY_INSTALL
+msgid "Nothing to install or update."
+msgstr "无需安装或更新。"
+
+#: STRINGTABLE.IDS_ROOT_BROWSE_TITLE
+msgid "Select an installation root directory"
+msgstr "选择安装根目录"
+
+#: STRINGTABLE.IDS_LOCALDIR_BROWSE_DOWNLOAD_TITLE
+msgid "Select download directory"
+msgstr "选择下载目录"
+
+#: STRINGTABLE.IDS_LOCALDIR_BROWSE_PACKAGE_TITLE
+msgid "Select local package directory"
+msgstr "选择本地软件包目录"
+
+#: STRINGTABLE.IDS_PROGRESS_CHECKING_HASH
+msgid "Checking %s for %s"
+msgstr "正在检查 %s 的 %s"
+
+#: STRINGTABLE.IDS_PROGRESS_DOWNLOADING_FROM
+msgid "%s from %s"
+msgstr "%s 来自 %s"
+
+#: STRINGTABLE.IDS_CONFIRM_UNINSTALL
+msgctxt "STRINGTABLE.IDS_CONFIRM_UNINSTALL"
+msgid "Uninstall"
+msgstr "卸载"
+
+#: STRINGTABLE.IDS_CONFIRM_INSTALL
+msgctxt "STRINGTABLE.IDS_CONFIRM_INSTALL"
+msgid "Install"
+msgstr "安装"
+
+#: STRINGTABLE.IDS_CONFIRM_DOWNLOAD
+msgid "Download"
+msgstr "下载"
+
+#: STRINGTABLE.IDS_CONFIRM_NOTHING
+msgid "No changes"
+msgstr "没有变化"
+
+#: STRINGTABLE.IDS_CONFIRM_AUTO_ADD
+msgid "(automatically added)"
+msgstr "(自动添加)"
+
+#: STRINGTABLE.IDS_CONFIRM_SOURCE
+msgid "(source)"
+msgstr "(来源)"
+
+#: STRINGTABLE.IDS_FILE_INUSE_KILL
+msgid "&Kill Processes"
+msgstr "终止进程(&K)"
+
+#: STRINGTABLE.IDS_FILE_INUSE_MSG
+msgctxt "STRINGTABLE.IDS_FILE_INUSE_MSG"
+msgid "Unable to extract"
+msgstr "无法解压缩"
+
+#: STRINGTABLE.IDS_HELPTEXT_ERROR
+msgid "Error during option processing."
+msgstr "选项处理期间出错。"
+
+#: STRINGTABLE.IDS_HELPTEXT_HEADER
+msgid "Command Line Options:"
+msgstr "命令行选项:"
+
+#: STRINGTABLE.IDS_HELPTEXT_FOOTER
+msgid ""
+"The default is to both download and install packages, unless either --"
+"download or --local-install is specified."
+msgstr "默认设置是下载和安装软件包,除非指定了 --download 或 --local-install。"
+
+#: STRINGTABLE.IDS_HELPTEXT_ALLOW_TEST
+msgid "Consider package versions marked test"
+msgstr "考虑标记为测试的软件包版本"
+
+#: STRINGTABLE.IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS
+msgid "Allow old, unsupported Windows versions"
+msgstr "允许旧的、不受支持的 Windows 版本"
+
+#: STRINGTABLE.IDS_HELPTEXT_ARCH
+msgid "Architecture to install (x86_64 or x86)"
+msgstr "要安装的体系结构(x86_64 或 x86)"
+
+#: STRINGTABLE.IDS_HELPTEXT_CATEGORIES
+msgid "Specify categories to install"
+msgstr "指定要安装的类别"
+
+#: STRINGTABLE.IDS_HELPTEXT_COMPACTOS
+msgid ""
+"Compress installed files with Compact OS (xpress4k, xpress8k, xpress16k, lzx)"
+msgstr "使用 Compact OS(xpress4k、xpress8k、xpress16k、lzx)压缩已安装的文件"
+
+#: STRINGTABLE.IDS_HELPTEXT_DELETE_ORPHANS
+msgid "Remove orphaned packages"
+msgstr "删除孤立包"
+
+#: STRINGTABLE.IDS_HELPTEXT_DISABLE_ANTIVIRUS
+msgid ""
+"Disable known or suspected buggy anti virus software packages during "
+"execution"
+msgstr "在执行过程中禁用已知或可疑的有缺陷的防病毒软件包"
+
+#: STRINGTABLE.IDS_HELPTEXT_DOWNLOAD
+msgid "Download packages from internet"
+msgstr "从互联网下载软件包"
+
+#: STRINGTABLE.IDS_HELPTEXT_FORCE_CURRENT
+msgid "Select the current version for all packages"
+msgstr "为所有软件包选择当前版本"
+
+#: STRINGTABLE.IDS_HELPTEXT_HELP
+msgid "Print help"
+msgstr "打印帮助"
+
+#: STRINGTABLE.IDS_HELPTEXT_INCLUDE_SOURCE
+msgid "Automatically install source for every package installed"
+msgstr "为每个安装的软件包自动安装源代码"
+
+#: STRINGTABLE.IDS_HELPTEXT_INI_BASENAME
+msgid "Use a different basename, e.g. \"\"foo\"\", instead of \"\"setup\"\""
+msgstr "使用不同的基本名称,例如“foo”,而不是“setup”"
+
+#: STRINGTABLE.IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS
+msgid "Use untrusted keys and retain all"
+msgstr "使用不受信任的密钥并保留所有密钥"
+
+#: STRINGTABLE.IDS_HELPTEXT_LANG
+msgid "Specify GUI language langid"
+msgstr "指定 GUI 语言语言 langid"
+
+#: STRINGTABLE.IDS_HELPTEXT_LOCAL_INSTALL
+msgid "Install packages from local directory"
+msgstr "从本地目录安装软件包"
+
+#: STRINGTABLE.IDS_HELPTEXT_LOCAL_PACKAGE_DIR
+msgid "Local package directory"
+msgstr "本地软件包目录"
+
+#: STRINGTABLE.IDS_HELPTEXT_MIRROR_MODE
+msgid ""
+"Skip package availability check when installing from local directory ("
+"requires local directory to be clean mirror!)"
+msgstr "从本地目录安装时跳过包可用性检查(要求本地目录是干净的镜像!)"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_ADMIN
+msgid "Do not check for and enforce running as Administrator"
+msgstr "不检查并强制以管理员身份运行"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_DESKTOP
+msgid "Disable creation of desktop shortcut"
+msgstr "禁用桌面快捷方式的创建"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_REPLACEONREBOOT
+msgid "Disable replacing in-use files on next reboot"
+msgstr "禁用在下次重新启动时替换正在使用的文件"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_SHORTCUTS
+msgid "Disable creation of desktop and start menu shortcuts"
+msgstr "禁用桌面和开始菜单快捷方式的创建"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_STARTMENU
+msgid "Disable creation of start menu shortcut"
+msgstr "禁用创建开始菜单快捷方式"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_VERIFY
+msgid "Don't verify setup.ini signatures"
+msgstr "不验证 setup.ini 的签名"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_VERSION_CHECK
+msgid "Suppress checking if a newer version of setup is available"
+msgstr "禁止检查是否有较新版本的安装程序可用"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS
+msgid "Don't warn about deprecated Windows versions"
+msgstr "不要警告已弃用的 Windows 版本"
+
+#: STRINGTABLE.IDS_HELPTEXT_NO_WRITE_REGISTRY
+msgid "Don't write root installation directory to registry"
+msgstr "不要将根安装目录写入注册表"
+
+#: STRINGTABLE.IDS_HELPTEXT_OLD_KEYS
+msgid "Enable old cygwin.com keys"
+msgstr "启用旧的 cygwin.com 密钥"
+
+#: STRINGTABLE.IDS_HELPTEXT_ONLY_SITE
+msgid "Do not download mirror list.  Only use sites specified with -s"
+msgstr "不要下载镜像列表。 仅使用 -s 指定的站点"
+
+#: STRINGTABLE.IDS_HELPTEXT_PACKAGES
+msgid "Specify packages to install"
+msgstr "指定要安装的软件包"
+
+#: STRINGTABLE.IDS_HELPTEXT_PACKAGE_MANAGER
+msgid "Semi-attended chooser-only mode"
+msgstr "半有人值守仅选择器模式"
+
+#: STRINGTABLE.IDS_HELPTEXT_PROXY
+msgid "HTTP/FTP proxy (host:port)"
+msgstr "HTTP/FTP 代理(主机名:端口号)"
+
+#: STRINGTABLE.IDS_HELPTEXT_PRUNE_INSTALL
+msgid "Prune the installation to only the requested packages"
+msgstr "仅将安装删剪为请求的软件包"
+
+#: STRINGTABLE.IDS_HELPTEXT_PUBKEY
+msgid "URL or absolute path of extra public key file (RFC4880 format)"
+msgstr "额外公钥文件的 URL 或绝对路径(RFC4880 格式)"
+
+#: STRINGTABLE.IDS_HELPTEXT_QUIET_MODE
+msgid "Unattended setup mode"
+msgstr "无人值守安装模式"
+
+#: STRINGTABLE.IDS_HELPTEXT_REMOVE_CATEGORIES
+msgid "Specify categories to uninstall"
+msgstr "指定要卸载的类别"
+
+#: STRINGTABLE.IDS_HELPTEXT_REMOVE_PACKAGES
+msgid "Specify packages to uninstall"
+msgstr "指定要卸载的软件包"
+
+#: STRINGTABLE.IDS_HELPTEXT_ROOT
+msgid "Root installation directory"
+msgstr "根安装目录"
+
+#: STRINGTABLE.IDS_HELPTEXT_SEXPR_PUBKEY
+msgid "Extra DSA public key in s-expr format"
+msgstr "s-expr 格式的额外 DSA 公钥"
+
+#: STRINGTABLE.IDS_HELPTEXT_SITE
+msgid "Download site URL"
+msgstr "下载网址"
+
+#: STRINGTABLE.IDS_HELPTEXT_SYMLINK_TYPE
+msgid "Symlink type (lnk, native, sys, wsl)"
+msgstr "符号链接类型(lnk,本机,系统,wsl)"
+
+#: STRINGTABLE.IDS_HELPTEXT_UNTRUSTED_KEYS
+msgid "Use untrusted saved extra keys"
+msgstr "使用不受信任的已保存额外密钥"
+
+#: STRINGTABLE.IDS_HELPTEXT_UPGRADE_ALSO
+msgid "Also upgrade installed packages"
+msgstr "同时升级已安装的软件包"
+
+#: STRINGTABLE.IDS_HELPTEXT_USER_AGENT
+msgid "User agent string for HTTP requests"
+msgstr "用于 HTTP 请求的用户代理字符串"
+
+#: STRINGTABLE.IDS_HELPTEXT_VERBOSE
+msgid "Verbose output"
+msgstr "详细输出"
+
+#: STRINGTABLE.IDS_HELPTEXT_VERSION
+msgid "Show version"
+msgstr "显示版本"
+
+#: STRINGTABLE.IDS_HELPTEXT_WAIT
+msgid "When elevating, wait for elevated child process"
+msgstr "提升时,等待提升的子进程"
diff --git a/postinstall.cc b/postinstall.cc
index e990f520..32bc401b 100644
--- a/postinstall.cc
+++ b/postinstall.cc
@@ -249,11 +249,6 @@ do_postinstall_reflector (void *p)
     // Tell the postinstall results page the results string
     PostInstallResults.SetResultsString(s);
 
-    /* Revert primary group to admins group.  This allows to create all the
-       state files written by setup as admin group owned. */
-    if (root_scope == IDC_ROOT_SYSTEM)
-      nt_sec.setAdminGroup ();
-
     // Tell the progress page that we're done running scripts
     Progress.PostMessageNow (WM_APP_POSTINSTALL_THREAD_COMPLETE, 0,
                           s.empty() ? IDD_DESKTOP : IDD_POSTINSTALL);
@@ -268,14 +263,6 @@ static HANDLE context[2];
 void
 do_postinstall (HINSTANCE h, HWND owner)
 {
-  /* Switch back to original primary group.  Otherwise we end up with a
-     broken passwd entry for the current user.
-     FIXME: Unfortunately this has the unfortunate side-effect that *all*
-     files created via postinstall are group owned by the original primary
-     group of the user.  Find a way to avoid this at one point. */
-  if (root_scope == IDC_ROOT_SYSTEM)
-    nt_sec.resetPrimaryGroup ();
-
   context[0] = h;
   context[1] = owner;
 
diff --git a/proppage.cc b/proppage.cc
index 8da1c52e..82a825cb 100644
--- a/proppage.cc
+++ b/proppage.cc
@@ -67,12 +67,12 @@ PropertyPage::Create (DLGPROC dlgproc,
 			BOOL (*cproc) (HWND h, int id, HWND hwndctl,
 				       UINT code), int TemplateID)
 {
-  memset(&psp, 0, sizeof (PROPSHEETPAGE));
-  psp.dwSize = sizeof (PROPSHEETPAGE);
+  memset(&psp, 0, sizeof (PROPSHEETPAGEW));
+  psp.dwSize = sizeof (PROPSHEETPAGEW);
   psp.dwFlags = 0;
   psp.hInstance = GetInstance ();
   psp.pfnDlgProc = FirstDialogProcReflector;
-  psp.pszTemplate = MAKEINTRESOURCE(TemplateID);
+  psp.pszTemplate = MAKEINTRESOURCEW(TemplateID);
   psp.lParam = (LPARAM) this;
   psp.pfnCallback = NULL;
 
@@ -95,10 +95,10 @@ PropertyPage::FirstDialogProcReflector (HWND hwnd, UINT message,
       return FALSE;
     }
 
-  This = (PropertyPage *) (((PROPSHEETPAGE *) lParam)->lParam);
+  This = (PropertyPage *) (((LPPROPSHEETPAGEW) lParam)->lParam);
 
   SetWindowLongPtr (hwnd, DWLP_USER, (LONG_PTR) This);
-  SetWindowLongPtr (hwnd, DWLP_DLGPROC, (LONG_PTR) DialogProcReflector);
+  SetWindowLongPtrW (hwnd, DWLP_DLGPROC, (LONG_PTR) DialogProcReflector);
 
   This->SetHWND (hwnd);
   return This->DialogProc (message, wParam, lParam);
@@ -262,7 +262,7 @@ PropertyPage::DialogProc (UINT message, WPARAM wParam, LPARAM lParam)
               SetWindowLongPtr (GetHWND (), DWLP_MSGRESULT, FALSE);
               return TRUE;
             }
-          case TTN_GETDISPINFO:
+          case TTN_GETDISPINFOW:
             {
               return TooltipNotificationHandler (lParam);
             }
diff --git a/proppage.h b/proppage.h
index 9424ffc2..64f822b5 100644
--- a/proppage.h
+++ b/proppage.h
@@ -32,7 +32,7 @@ class PropSheet;
 class PropertyPage:public Window
 {
   static bool DoOnceForSheet;
-  PROPSHEETPAGE psp;
+  PROPSHEETPAGEW psp;
   DLGPROC proc;
     BOOL (*cmdproc) (HWND h, int id, HWND hwndctl, UINT code);
 
@@ -89,7 +89,7 @@ public:
     PropertyPage ();
     virtual ~ PropertyPage ();
 
-  PROPSHEETPAGE *GetPROPSHEETPAGEPtr ()
+  LPPROPSHEETPAGEW GetPROPSHEETPAGEPtr ()
   {
     return &psp;
   };
diff --git a/propsheet.cc b/propsheet.cc
index 742e5dab..a2dca458 100644
--- a/propsheet.cc
+++ b/propsheet.cc
@@ -69,7 +69,7 @@ PropSheet::CreatePages ()
   for (i = 0; i < PropertyPages.size(); i++)
     {
       retarray[i] =
-	CreatePropertySheetPage (PropertyPages[i]->GetPROPSHEETPAGEPtr ());
+	CreatePropertySheetPageW (PropertyPages[i]->GetPROPSHEETPAGEPtr ());
 
       // Set position info
       if (i == 0)
@@ -267,10 +267,15 @@ PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 	  Hook into the window proc.
 	  We need to catch some messages for resizing.
 	 */
-	PropSheetData::Instance().oldWndProc =
-	  (WNDPROC)GetWindowLongPtr (hwndDlg, GWLP_WNDPROC);
-	SetWindowLongPtr (hwndDlg, GWLP_WNDPROC,
-	  (LONG_PTR)&PropSheetWndProc);
+        PropSheetData::Instance().oldWndProc = (WNDPROC)GetWindowLongPtrW (hwndDlg, GWLP_WNDPROC);
+        SetWindowLongPtrW (hwndDlg, GWLP_WNDPROC, (LONG_PTR)&PropSheetWndProc);
+        /*
+          Store the PropSheet HWND in the Chooser, for use in resizing
+
+          (XXX: this is just silly: The PropSheet HWND is the parent of the
+          PropPage HWND, so chooser has access to that HWND as GetParent()
+          anyhow... )
+         */
 	ChooserPage::SetHwndDialog (hwndDlg);
       }
       return TRUE;
@@ -281,11 +286,11 @@ PropSheetProc (HWND hwndDlg, UINT uMsg, LPARAM lParam)
 bool
 PropSheet::Create (const Window * Parent, DWORD Style)
 {
-  PROPSHEETHEADER p;
+  PROPSHEETHEADERW p;
 
   PageHandles = CreatePages ();
 
-  p.dwSize = sizeof (PROPSHEETHEADER);
+  p.dwSize = sizeof (PROPSHEETHEADERW);
   p.dwFlags = PSH_NOAPPLYNOW | PSH_WIZARD | PSH_USECALLBACK
     /*| PSH_MODELESS */ | PSH_USEICONID;
   if (Parent != NULL)
@@ -298,13 +303,13 @@ PropSheet::Create (const Window * Parent, DWORD Style)
     }
   p.hInstance = GetInstance ();
   p.nPages = PropertyPages.size();
-  p.pszIcon = MAKEINTRESOURCE(IDI_CYGWIN);
+  p.pszIcon = MAKEINTRESOURCEW(IDI_CYGWIN);
   p.nStartPage = 0;
   p.phpage = PageHandles;
   p.pfnCallback = PropSheetProc;
 
   // The winmain event loop actually resides in here.
-  PropertySheet (&p);
+  PropertySheetW (&p);
 
   SetHWND (NULL);
 
diff --git a/res.rc b/res.rc
index 5aefbc0a..d65e14e8 100644
--- a/res.rc
+++ b/res.rc
@@ -79,3 +79,4 @@ CYGWIN-TERMINAL.ICON    FILE    "cygwin-terminal.ico"
 // Translations
 
 #include "res/fr/res.rc"
+#include "res/zh_Hans/res.rc"
diff --git a/res/zh_Hans/res.rc b/res/zh_Hans/res.rc
new file mode 100644
index 00000000..97fc9fc0
--- /dev/null
+++ b/res/zh_Hans/res.rc
@@ -0,0 +1,535 @@
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+// Throughout, we use the font "MS Shell Dlg". This seems to be necessary to
+// work around some not-fully-understood issues with PropertySheets. Hopefully,
+// using this font will cause things to 'just work'. Further information on
+// this topic is at:
+//   http://sources.redhat.com/ml/cygwin-apps/2003-05/msg00177.html
+
+IDD_SOURCE DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 选择安装类型"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    CONTROL         "从互联网安装\n(下载的文件将保留以备将来重复使用)(&I)",IDC_SOURCE_NETINST,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP | BS_MULTILINE | BS_TOP,71,60,200,30
+    CONTROL         "下载而不安装(&D)",IDC_SOURCE_DOWNLOAD,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,71,90,200,10
+    CONTROL         "从本地目录安装(&L)",IDC_SOURCE_LOCALDIR,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,71,120,200,10
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    LTEXT           "选择下载源",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    LTEXT           "选择是从互联网安装或下载,还是从本地目录中的文件安装。",IDC_SOURCE_SUBTEXT,21,9,239,16,NOT WS_GROUP
+END
+
+IDD_VIRUS DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 禁用病毒扫描程序?"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    CONTROL         "禁用病毒扫描程序(&D)",IDC_DISABLE_AV,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,101,69,115,10
+    CONTROL         "保留病毒扫描程序(&L)",IDC_LEAVE_AV,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,101,84,115,10
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    LTEXT           "选择是否在安装时禁用病毒扫描程序。",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    LTEXT           "某些防病毒程序(尤其是 McAfee)会在安装 Cygwin 期间导致 Windows XP 计算机出现蓝屏。",IDC_STATIC,21,9,239,16,NOT WS_GROUP
+    LTEXT           "已检测到可能存在问题的一个。 Cygwin 安装程序可以在安装过程中禁用它,并在安装完成后重新启用它。",IDC_STATIC,21,32,239,24,NOT WS_GROUP
+END
+
+IDD_LOCAL_DIR DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 选择本地软件包目录"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT           "选择本地软件包目录",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    LTEXT           "选择希望安装程序存储其下载的安装文件的目录。 如果该目录尚不存在,则将创建该目录。",IDC_LOCAL_DIR_DOWNLOAD_DESC,21,9,248,16,NOT WS_GROUP
+    LTEXT           "选择安装程序应在其中查找下载的安装文件的目录。",IDC_LOCAL_DIR_INSTALL_DESC,21,9,248,16,NOT WS_GROUP
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    GROUPBOX        "本地软件包目录",IDC_LOCALDIR_GRP,5,35,330,35
+    EDITTEXT        IDC_LOCAL_DIR,13,47,270,14,ES_AUTOHSCROLL | WS_TABSTOP
+    PUSHBUTTON      "浏览(&R)...",IDC_LOCAL_DIR_BROWSE,285,47,44,14,WS_TABSTOP
+END
+
+IDD_ROOT DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 选择安装目录"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT           "选择根安装目录",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    LTEXT           "选择要安装 Cygwin 的目录。还需要选择几个安装参数。",IDC_ROOTDIR_SUBTEXT,21,9,239,16,NOT WS_GROUP
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    GROUPBOX        "根目录",IDC_ROOTDIR_GRP,5,35,330,35
+    EDITTEXT        IDC_ROOT_DIR,13,47,270,14,ES_AUTOHSCROLL | WS_TABSTOP
+    PUSHBUTTON      "浏览(&R)...",IDC_ROOT_BROWSE,285,47,44,14,WS_TABSTOP
+    GROUPBOX        "为以下用户安装",IDC_INSTALLFOR_GRP,5,76,330,101
+    CONTROL         "所有用户(推荐)(&A)",IDC_ROOT_SYSTEM,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP | WS_GROUP,13,89,130,8
+    CONTROL         "仅为我安装(&M)",IDC_ROOT_USER,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,13,130,130,8
+    LTEXT           "Cygwin 将可供系统的所有用户使用。",IDC_ALLUSERS_TEXT,25,101,300,28
+    LTEXT           "Cygwin仍将对所有用户可用,但桌面图标,Cygwin菜单条目和重要的安装程序信息仅对当前用户可用。 仅当您缺少管理员权限或有特定需求时,才选择此选项。",IDC_JUSTME_TEXT,25,140,300,32
+END
+
+IDD_SITE DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | 
+    WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_CONTROLPARENT
+CAPTION "Cygwin 设置 - 选择下载站点"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    LISTBOX         IDC_URL_LIST,66,45,185,110,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_HSCROLL | WS_GROUP | WS_TABSTOP
+    LTEXT           "可用的下载站点:",IDC_STATIC,66,34,183,8,NOT WS_GROUP
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    LTEXT           "从此列表中选择一个网站,或将您自己的网站添加到列表中。",IDC_STATIC,21,9,239,16,NOT WS_GROUP
+    LTEXT           "选择下载站点",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    EDITTEXT        IDC_EDIT_USER_URL,65,160,185,14,ES_AUTOHSCROLL | WS_GROUP
+    LTEXT           "用户网址:",IDC_SITE_USERURL,15,162,45,8,NOT WS_GROUP
+    PUSHBUTTON      "添加",IDC_BUTTON_ADD_URL,255,160,50,14
+END
+
+IDD_NET DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 选择连接类型"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    CONTROL         "使用系统代理设置(&S)",IDC_NET_PRECONFIG,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,60,55,185,10
+    CONTROL         "直接连接(&D)",IDC_NET_DIRECT,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,60,70,73,10
+    CONTROL         "使用 HTTP/FTP 代理(&P):",IDC_NET_PROXY,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,60,85,88,10
+    EDITTEXT        IDC_PROXY_HOST,120,105,120,12,ES_AUTOHSCROLL | WS_DISABLED | WS_GROUP
+    EDITTEXT        IDC_PROXY_PORT,120,125,30,12,ES_AUTOHSCROLL | WS_DISABLED
+    GROUPBOX        "",IDC_STATIC,60,95,185,50
+    RTEXT           "代理主机(&H)",IDC_STATIC,65,105,50,12,SS_CENTERIMAGE | NOT WS_GROUP
+    RTEXT           "端口(&T)",IDC_STATIC,85,125,30,12,SS_CENTERIMAGE | NOT WS_GROUP
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    LTEXT           "安装程序需要知道您希望它如何连接到互联网。 在下面选择适当的设置。",IDC_STATIC,21,9,239,16,NOT WS_GROUP
+    LTEXT           "选择您的互联网连接",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+END
+
+IDD_INSTATUS DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_CHILD | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "Cygwin 安装程序"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT           "正在安装...",IDC_INS_ACTION,45,55,205,8,SS_ENDELLIPSIS
+    LTEXT           "(软件包)",IDC_INS_PKG,45,70,205,8,SS_ENDELLIPSIS
+    LTEXT           "(文件)",IDC_INS_FILE,45,85,205,8,SS_ENDELLIPSIS
+    CONTROL         "第一阶段",IDC_INS_DISKFULL,"msctls_progress32",PBS_SMOOTH | WS_BORDER,95,130,155,10
+    CONTROL         "第一阶段",IDC_INS_IPROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,95,115,155,10
+    CONTROL         "第一阶段",IDC_INS_PPROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,95,100,155,10
+    LTEXT           "软件包:",IDC_INS_BL_PACKAGE,45,100,47,8,NOT WS_GROUP
+    LTEXT           "总计:",IDC_INS_BL_TOTAL,45,115,48,8,NOT WS_GROUP
+    LTEXT           "磁盘:",IDC_INS_BL_DISK,45,130,47,8,NOT WS_GROUP
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    LTEXT           "此页显示下载或安装的进度。",IDC_STATIC,21,9,239,16,NOT WS_GROUP
+    LTEXT           "进度",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+END
+
+IDD_PROXY_AUTH DIALOG 0, 0, SETUP_SMALL_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "需要代理身份验证"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    ICON            IDI_CYGWIN,IDC_HEADICON,5,5,21,20
+    LTEXT           "代理用户 ID(&U)",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE,WS_EX_RIGHT
+    EDITTEXT        IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL
+    LTEXT           "密码(&P)",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE,WS_EX_RIGHT
+    EDITTEXT        IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL
+    LTEXT           "需要代理授权",IDC_STATIC,65,10,145,10
+    DEFPUSHBUTTON   "确定(&O)",IDOK,100,75,45,15,WS_DISABLED
+    PUSHBUTTON      "取消",IDCANCEL,165,75,45,15
+END
+
+IDD_NET_AUTH DIALOG 0, 0, SETUP_SMALL_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "需要服务器身份验证"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    ICON            IDI_CYGWIN,IDC_HEADICON,5,5,21,20
+    LTEXT           "用户 ID(&U)",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE,WS_EX_RIGHT
+    EDITTEXT        IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL
+    LTEXT           "密码(&P)",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE,WS_EX_RIGHT
+    EDITTEXT        IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL
+    LTEXT           "需要服务器授权",IDC_STATIC,65,10,145,10
+    DEFPUSHBUTTON   "确定(&O)",IDOK,100,75,45,15,WS_DISABLED
+    PUSHBUTTON      "取消",IDCANCEL,165,75,45,15
+END
+
+IDD_SPLASH DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | 
+    WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT           "Cygwin 网络发行版安装程序",IDC_STATIC_WELCOME_TITLE,115,1,195,24
+    LTEXT           "此安装程序用于 Cygwin 环境的初始安装以及所有后续更新。以下页面将指导您完成安装。\n\n请注意,默认情况下,我们只安装一组基本的软件包。Cygwin 提供了大量涵盖各种用途的软件包。\n\n将来可以随时运行此程序,以根据需要添加、删除或升级软件包。",IDC_SPLASH_TEXT,115,25,195,90
+    ICON            IDI_CYGWIN,IDC_SPLASH_ICON,4,6,0,0,SS_ICON | SS_REALSIZEIMAGE
+    LTEXT           "",IDC_VERSION,115,127,195,10
+    LTEXT           "",IDC_SPLASH_COPYR,115,140,195,8
+    LTEXT           "",IDC_SPLASH_URL,115,152,90,8
+END
+
+IDD_DESKTOP DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE | 
+    WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 安装状态和创建图标"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    CONTROL         "在桌面上创建图标(&D)",IDC_ROOT_DESKTOP,"Button",BS_AUTOCHECKBOX,108,78,100,8
+    CONTROL         "将图标添加到“开始”菜单(&S)",IDC_ROOT_MENU,"Button",BS_AUTOCHECKBOX,108,93,100,8
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    LTEXT           "告诉安装程序您是否希望它创建一些图标以便于访问 Cygwin 环境。",IDC_DESKTOP_HEADER_INSTALL,21,9,239,16,NOT WS_GROUP
+    LTEXT           "创建图标",IDC_DESKTOP_HEADER_TITLE_INSTALL,7,0,258,8,NOT WS_GROUP
+    LTEXT           "在仅下载模式下显示安装状态。",IDC_DESKTOP_HEADER_DOWNLOAD,21,9,239,16,NOT WS_GROUP
+    LTEXT           "安装完成",IDC_DESKTOP_HEADER_TITLE_DOWNLOAD,7,0,258,8,NOT WS_GROUP
+    CONTROL         "",IDC_DESKTOP_SEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,135,SETUP_STANDARD_DIALOG_W,1
+    LTEXT           "安装状态",IDC_STATUS_HEADER,7,140,258,8,NOT WS_GROUP
+    LTEXT           "Cygwin 安装成功。",IDC_STATUS,21,149,279,36,NOT WS_GROUP
+END
+
+IDD_FTP_AUTH DIALOG 0, 0, SETUP_SMALL_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "需要 FTP 身份验证"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    ICON            IDI_CYGWIN,IDC_HEADICON,5,5,21,20
+    LTEXT           "用户 ID(&U)",IDC_STATIC,5,28,55,15,SS_CENTERIMAGE,WS_EX_RIGHT
+    EDITTEXT        IDC_NET_USER,65,28,145,12,ES_AUTOHSCROLL
+    LTEXT           "密码(&P)",IDC_STATIC,10,43,50,15,SS_CENTERIMAGE,WS_EX_RIGHT
+    EDITTEXT        IDC_NET_PASSWD,65,43,145,12,ES_PASSWORD | ES_AUTOHSCROLL
+    LTEXT           "需要 FTP 授权",IDC_STATIC,65,10,145,10
+    DEFPUSHBUTTON   "确定(&O)",IDOK,100,75,45,15,WS_DISABLED
+    PUSHBUTTON      "取消",IDCANCEL,165,75,45,15
+END
+
+IDD_CHOOSE DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 选择软件包"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT           "查看(&V)",IDC_CHOOSE_VIEWCAPTION,SETUP_VIEW_X,33,SETUP_VIEW_W,10
+    COMBOBOX        IDC_CHOOSE_VIEW,SETUP_VIEWLIST_X,30,SETUP_VIEWLIST_W,84,CBS_DROPDOWNLIST | WS_TABSTOP
+    RTEXT           "搜索(&S)",IDC_STATIC,SETUP_SEARCH_X,33,SETUP_SEARCH_W,10,SS_CENTERIMAGE,WS_EX_RIGHT
+    CONTROL         "搜索 ",IDC_CHOOSE_DO_SEARCH,"Button",BS_PUSHBUTTON | NOT WS_VISIBLE,SETUP_SEARCH_X,33,SETUP_SEARCH_W,14
+    EDITTEXT        IDC_CHOOSE_SEARCH_EDIT,SETUP_SEARCHTEXT_X,30,SETUP_SEARCHTEXT_W,14,ES_AUTOHSCROLL
+    PUSHBUTTON      "清除(&C)",IDC_CHOOSE_CLEAR_SEARCH,SETUP_CLEAR_X,30,SETUP_CLEAR_W,14
+    CONTROL         "保留(&K)",IDC_CHOOSE_KEEP,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,SETUP_KEEP_X,30,SETUP_KPCE_W,14
+    CONTROL         "最佳(&B)",IDC_CHOOSE_BEST,"Button",BS_AUTORADIOBUTTON,SETUP_BEST_X,30,SETUP_KPCE_W,14
+    CONTROL         "同步(&S)",IDC_CHOOSE_SYNC,"Button",BS_AUTORADIOBUTTON,SETUP_SYNC_X,30,SETUP_KPCE_W,14
+    CONTROL         "测试(&T)",IDC_CHOOSE_EXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,SETUP_EXP_X,30,SETUP_KPCE_W,14
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    CONTROL         "",IDC_CHOOSE_LIST,WC_LISTVIEW,LVS_NOSORTHEADER | LVS_REPORT | LVS_SINGLESEL | WS_TABSTOP,SETUP_CHOOSE_X,47,SETUP_CHOOSE_W,120,WS_EX_CLIENTEDGE
+    CONTROL         "隐藏过时的软件包(&H)",IDC_CHOOSE_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,167,160,14
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    LTEXT           "选择要下载的软件包。",IDC_CHOOSE_INST_TEXT_DOWNLOAD,21,9,239,16,NOT WS_GROUP
+    LTEXT           "选择要安装的软件包。",IDC_CHOOSE_INST_TEXT_INSTALL,21,9,239,16,NOT WS_GROUP
+    LTEXT           "选择软件包",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+END
+
+IDD_PREREQ DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION | 
+    WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 解决依赖关系"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    LTEXT           "解决依赖关系",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    LTEXT           "在试图满足依赖关系时发生了以下问题。",IDC_STATIC,21,9,239,16,NOT WS_GROUP
+    CONTROL         "接受默认问题解决方案(&A)",IDC_PREREQ_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,167,225,14
+    EDITTEXT        IDC_PREREQ_EDIT,7,41,303,124,WS_VSCROLL | WS_HSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | ES_AUTOVSCROLL
+END
+
+IDD_CONFIRM DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_3DLOOK | WS_CHILD | WS_VISIBLE | WS_CAPTION |
+    WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 查看并确认更改"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    LTEXT           "查看并确认更改",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    EDITTEXT        IDC_CONFIRM_EDIT,7,41,325,131,WS_VSCROLL | WS_HSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | ES_AUTOVSCROLL
+END
+
+IDD_DROPPED DIALOG 0, 0, SETUP_STANDARD_DIALOG_W, 142
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 使用齐用的镜像?"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT           "警告:",IDC_STATIC,7,8,40,8
+    LTEXT           "您选择的一个或多个镜像不再在官方 Cygwin 镜像列表中。它/它们可能已过时或缺少某些软件包。\n这会影响以下镜像:",IDC_STATIC,47,8,263,32
+    EDITTEXT        IDC_DROP_MIRRORS,7,40,303,40,WS_VSCROLL | WS_HSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | ES_AUTOVSCROLL
+    LTEXT           "如果您遇到安装问题,请考虑仅尝试官方镜像。\n\n是否要使用此镜像继续?",IDC_STATIC,7,88,303,24
+    CONTROL         "不要再警告我这个/这些镜像(&D)",IDC_DROP_NOWARN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,120,213,15
+    PUSHBUTTON      "是(&Y)",IDYES,220,120,45,15
+    DEFPUSHBUTTON   "否(&N)",IDNO,265,120,45,15
+END
+
+IDD_DOWNLOAD_ERROR DIALOG 0, 0, SETUP_STANDARD_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "下载不完整"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    ICON            IDI_WARNING,IDC_HEADICON,10,10
+    LTEXT           "以下软件包出现下载错误:",IDC_STATIC,7,8,320,16
+    EDITTEXT        IDC_DOWNLOAD_EDIT,7,24,320,88,WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOVSCROLL
+    LTEXT           "选择“重试”以重试下载,“返回”以返回软件包选择页面,“继续”以继续(不推荐),或“取消”以退出。",IDC_STATIC,7,120,320,24
+    DEFPUSHBUTTON   "重试(&R)",IDRETRY,45,150,50,15
+    PUSHBUTTON      "返回(&B)",IDC_BACK,110,150,50,15
+    PUSHBUTTON      "继续(&C)",IDIGNORE,175,150,50,15
+    PUSHBUTTON      "取消",IDABORT,240,150,50,15
+END
+
+IDD_POSTINSTALL DIALOG 0, 0, SETUP_STANDARD_DIALOG_W, 142
+STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_CHILD | WS_VISIBLE |
+    WS_CAPTION | WS_SYSMENU
+CAPTION "Cygwin 安装程序 - 运行安装后脚本"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    CONTROL         "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28,SETUP_STANDARD_DIALOG_W,1
+    ICON            IDI_CYGWIN,IDC_HEADICON,SETUP_HEADICON_X,0,21,20
+    LTEXT           "安装后脚本错误",IDC_STATIC_HEADER_TITLE,7,0,258,8,NOT WS_GROUP
+    LTEXT           "这些并不一定意味着受影响的软件包将无法正常运行,但请检查 /var/log/setup.log.full 并报告任何问题。",IDC_STATIC,21,9,239,16,NOT WS_GROUP
+    EDITTEXT        IDC_POSTINSTALL_EDIT,7,41,303,112,WS_VSCROLL | WS_HSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOHSCROLL | ES_AUTOVSCROLL
+END
+
+IDD_FILE_INUSE DIALOG 0, 0, SETUP_MEDIUM_DIALOG_DIMS
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
+CAPTION "检测到正在使用的文件"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    ICON            IDI_WARNING,IDC_HEADICON,10,10
+    LTEXT           "无法解压缩",IDC_FILE_INUSE_MSG,33,10,234,8,SS_PATHELLIPSIS
+    LTEXT           "以下进程正在使用该文件:",IDC_STATIC,33,28,234,8
+    EDITTEXT        IDC_FILE_INUSE_EDIT,33,40,234,32,WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_READONLY | ES_AUTOVSCROLL | NOT WS_TABSTOP
+    LTEXT           "选择“重试”以重试,选择“停止”以停止进程并重试,或选择“继续”以继续(文件将在重启后更新)。",IDC_FILE_INUSE_HELP_0,33,80,234,24,NOT WS_GROUP
+    LTEXT           "选择“重试”以重试,选择“终止”以终止进程并重试,或选择“继续”以继续(文件将在重新启动后更新)。",IDC_FILE_INUSE_HELP_1,33,80,234,24,NOT WS_GROUP
+    LTEXT           "选择“重试”以重试,选择“终止”以强制终止所有进程并重试,或选择“继续”以继续(文件将在重启后更新)。",IDC_FILE_INUSE_HELP_2,33,80,234,24,NOT WS_GROUP
+    PUSHBUTTON      "重试(&R)",IDIGNORE,45,112,55,15
+    DEFPUSHBUTTON   "停止进程(&S)",IDRETRY,111,112,55,15
+    PUSHBUTTON      "继续(&C)",IDCONTINUE,177,112,55,15
+END
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+    IDS_ROOT_SLASH          "警告:我们建议您不要将硬盘驱动器的根用作 cygwin 根目录,以防止与其他程序发生冲突。 继续吗?"
+    IDS_ROOT_SPACE          "不应选择在目录名称中包含空格的根路径。 还是继续?"
+    IDS_ERR_OPEN_WRITE      "无法打开 %s 进行写入: %s"
+    IDS_SETUPINI_MISSING    "无法从 %s 获取 <%s>"
+    IDS_OLD_SETUPINI        "这个 setup.ini 比你上次安装 cygwin 时使用的旧。仍要继续?"
+    IDS_NOTHING_INSTALLED   "无需安装"
+    IDS_INSTALL_COMPLETE    "安装完成"
+    IDS_REBOOT_REQUIRED     "正在使用的文件已被替换。您需要尽快重新启动才能激活新版本。Cygwin 可能会错误地运行,直到您重新启动。"
+    IDS_ERR_OPEN_READ       "无法打开 %s 进行读取: %s"
+    IDS_ROOT_ABSOLUTE       "安装目录必须是绝对目录,同时包含驱动器号和前导斜杠,例如 C:\\Cygwin"
+    IDS_DOWNLOAD_COMPLETE   "下载完成"
+    IDS_NOLOGFILE           "无法打开日志文件 %s 进行写入"
+    IDS_UNINSTALL_COMPLETE  "卸载完成。"
+    IDS_ERR_CHDIR           "无法将目录更改为 %s: %s [%.8x]"
+    IDS_OLD_SETUP_VERSION   "此安装程序是版本 %s,但 setup.ini 声称版本 %s 可用。\n您可能想要升级以获得最新的功能和错误修复。"
+    IDS_DOWNLOAD_INCOMPLETE "下载不完整。是否重试?"
+    IDS_DOWNLOAD_INCOMPLETE_EXIT
+                            "下载不完整。 查看 %s 以了解详细信息"
+    IDS_INSTALL_ERROR       "安装错误 (%s),是否继续安装其他软件包?"
+    IDS_INSTALL_INCOMPLETE  "安装未完成。查看 %s 以了解详细信息"
+    IDS_CORRUPT_PACKAGE     "软件包 %s 具有损坏的本地副本,请删除并重试。"
+    IDS_QUERY_CORRUPT       "文件 %s 已损坏。是否删除它并再次下载?"
+    IDS_SKIP_PACKAGE        "%s\n您想跳过这个软件包吗?"
+    IDS_UNCAUGHT_EXCEPTION  "致命错误:未捕获的异常\n线程: %s\n类型: %s\n消息: %s"
+    IDS_UNCAUGHT_EXCEPTION_WITH_ERRNO
+                            "致命错误:未捕获的异常\n线程: %s\n类型: %s\n消息: %s\n应用错误编号: %d"
+    IDS_TRUSTKEEP_TOOLTIP   "将所有软件包设置为其当前安装的版本。 这相当于告诉安装程序不要对任何软件包进行任何更改。"
+    IDS_TRUSTCURR_TOOLTIP   "将所有软件包设置为可用的最佳版本(推荐)。"
+    IDS_TRUSTSYNC_TOOLTIP   "将所有软件包设置为软件包存储库中可用的版本,必要时降级。"
+    IDS_TRUSTEXP_TOOLTIP    "启用测试软件包。"
+    IDS_VIEWBUTTON_TOOLTIP  "选择软件包视图。 这决定了下面显示哪些包。\n\n类别:按软件包类别分组。 单击“+”展开。\n\n完整:显示所有软件包。\n\n挂起:仅显示即将安装、删除或升级的包。 这告诉您按“下一步”时将发生什么变化。\n\n最新:显示不需要执行任何操作的已安装软件包,因为它们已经处于所需版本。\n\n未安装:显示当前未安装且尚未选择安装的包。\n\n已选取:显示已选择的已安装包,但未作为依赖项安装。\n\n可移动:显示已选择且可以安全删除的已安装软件包。 没有其他已安装或选定的软件包依赖于这些软件包。\n\n不需要:显示现在可以安全删除的自动安装的软件包。 其他已安装或选定的软件包不再依赖于这些软件包。"
+    IDS_HIDEOBS_TOOLTIP     "如果选中,安装程序将隐藏名称以“_”开头的类别中的软件包。 此类软件包通常是已删除或重命名的软件包的空占位符,或者是自动处理的基础结构软件包。"
+    IDS_SIG_INVALID         "镜像错误:来自 %s 的 Setup.ini 签名 %s 验证失败。\n可能损坏镜像? Setup.ini 被拒绝。"
+    IDS_CRYPTO_ERROR        "内部错误: gcrypt 库错误 %d %s"
+    IDS_SEARCH_TOOLTIP      "在软件包名称中搜索此字符串。"
+    IDS_MAYBE_MKDIR         "目录 %s 不存在,是否创建它?"
+    IDS_CANT_MKDIR          "无法创建目录 %s,抱歉。(驱动器是已满还是只读?)"
+    IDS_NO_LOCALDIR         "找不到本地软件包目录 %s。\n您仍然可以删除已安装的\n软件包,但不会有任何要安装的内容。\n\n点击“确定”,如果这是你想要的\n或“取消”以选择其他目录。"
+    IDS_ELEVATED            "将安装移交给提升的子进程。"
+    IDS_INSTALLEDB_VERSION  "未知的 INSTALLED.DB 版本"
+    IDS_NO_MIRROR_LST       "无法下载镜像站点列表"
+    IDS_PROGRESS_PROGRESS   "进度:"
+    IDS_PROGRESS_PACKAGE    "软件包:"
+    IDS_PROGRESS_CONNECTING "正在连接..."
+    IDS_PROGRESS_CHECKING   "正在检查要下载的软件包..."
+    IDS_PROGRESS_DOWNLOADING
+                            "正在下载..."
+    IDS_PROGRESS_PARSING    "正在解析..."
+    IDS_PROGRESS_PREREMOVE  "正在运行预卸载脚本..."
+    IDS_PROGRESS_UNINSTALL  "正在卸载..."
+    IDS_PROGRESS_INSTALL    "正在安装..."
+    IDS_PROGRESS_CALCULATING
+                            "正在计算..."
+    IDS_PROGRESS_POSTINSTALL
+                            "正在运行..."
+    IDS_PROGRESS_SOLVING    "正在解决依赖关系..."
+    IDS_ACTION_DEFAULT      "默认"
+    IDS_ACTION_INSTALL      "安装"
+    IDS_ACTION_UNINSTALL    "卸载"
+    IDS_ACTION_SKIP         "跳过"
+    IDS_ACTION_KEEP         "保留"
+    IDS_ACTION_REINSTALL    "重新安装"
+    IDS_ACTION_RETRIEVE     "检索"
+    IDS_ACTION_UNKNOWN      "未知"
+    IDS_ACTION_SOURCE       "源"
+    IDS_VIEW_FULL           "完整"
+    IDS_VIEW_PENDING        "待定"
+    IDS_VIEW_UPTODATE       "最新"
+    IDS_VIEW_NOTINSTALLED   "未安装"
+    IDS_VIEW_PICKED         "已选择"
+    IDS_VIEW_REMOVABLE      "可卸载"
+    IDS_VIEW_UNNEEDED       "不需要的"
+    IDS_VIEW_CATEGORY       "类别"
+    IDS_COLUMN_PACKAGE      "软件包"
+    IDS_COLUMN_CURRENT      "当前"
+    IDS_COLUMN_NEW          "新增"
+    IDS_COLUMN_SOURCE       "源?"
+    IDS_COLUMN_CATEGORIES   "类别"
+    IDS_COLUMN_SIZE         "大小"
+    IDS_COLUMN_DESCR        "描述"
+    IDS_MBOX_CAPTION        "Cygwin 安装程序"
+    IDS_EXTRACTION_FAILED   "无法解压缩 /%s -- 损坏的软件包?"
+    IDS_EXTRACTION_INUSE    "无法解压缩 /%s -- 写入文件时出错\n\n文件正在使用中或发生了其他错误。\n\n请停止所有 Cygwin 进程并选择“重试”,或选择“继续”以继续(文件将在重新启动后更新)。\n"
+    IDS_INSTALL_OLD_CYGWIN  "在这里发现了旧版本的 cygwin1.dll:\n%s\n是否删除?"
+    IDS_INSTALL_DELETE_OLD_CYGWIN_FAILED
+                            "无法删除文件 %s。\nDLL 是否正由另一个应用程序使用?\n您应该尽早删除旧版本的 cygwin1.dll。"
+    IDS_SHELLLINK_FAILED    "CoCreateInstance 失败,错误为 0x%x。\n安装程序将无法在“开始”菜单或桌面上创建 Cygwin 图标。"
+    IDS_UNSUPPORTED_WINDOWS_VERSION
+                            "Cygwin 在此 Windows 版本上不受支持"
+    IDS_UNSUPPORTED_WINDOWS_ARCH
+                            "Cygwin is not supported on 32-bit Windows"
+    IDS_DEPRECATED_WINDOWS_VERSION
+                            "Cygwin 对此 Windows 版本的支持已被弃用,并将在下一个主要版本中删除"
+    IDS_MOUNT_REGISTRY_KEY_FAILED
+                            "无法创建注册表项来存储安装路径"
+    IDS_NIO_ERROR           "互联网错误:%s"
+    IDS_PREREQ_UNSOLVED_PROBLEMS
+                            "警告 - 未解决的问题\n\n如果继续,某些软件包可能无法正常工作。\n\n您确定要继续(不推荐)吗?"
+    IDS_MIXED_BITNESS_ERROR "目标 CPU 不匹配\n\n您正在尝试将 %s 位版本的 Cygwin 安装到包含 %s 位版本的 Cygwin 的目录中。 继续这样做会破坏现有安装。\n\n运行 setup-%s.exe 以更新 Cygwin 的现有 %s 位安装,或为 %s 位安装选择其他目录。"
+    IDS_GET_SITELIST_ERROR  "无法获取下载站点列表。\n请确保您的网络设置正确,然后重试。"
+    IDS_CONFIRM_EXIT        "是否确实要退出安装程序?任何当前的下载或安装都将中止。"
+    IDS_CONTINUE            "继续"
+    IDS_CHOOSER_EMPTY_NO_PACKAGES
+                            "未发现软件包。"
+    IDS_CHOOSER_EMPTY_DOWNLOAD
+                            "没有可下载的内容。"
+    IDS_CHOOSER_EMPTY_INSTALL
+                            "无需安装或更新。"
+    IDS_ROOT_BROWSE_TITLE   "选择安装根目录"
+    IDS_LOCALDIR_BROWSE_DOWNLOAD_TITLE
+                            "选择下载目录"
+    IDS_LOCALDIR_BROWSE_PACKAGE_TITLE
+                            "选择本地软件包目录"
+    IDS_PROGRESS_CHECKING_HASH
+                            "正在检查 %s 的 %s"
+    IDS_PROGRESS_DOWNLOADING_FROM
+                            "%s 来自 %s"
+    IDS_CONFIRM_UNINSTALL   "卸载"
+    IDS_CONFIRM_INSTALL     "安装"
+    IDS_CONFIRM_DOWNLOAD    "下载"
+    IDS_CONFIRM_NOTHING     "没有变化"
+    IDS_CONFIRM_AUTO_ADD    "(自动添加)"
+    IDS_CONFIRM_SOURCE      "(来源)"
+    IDS_FILE_INUSE_KILL     "终止进程(&K)"
+    IDS_FILE_INUSE_MSG      "无法解压缩"
+END
+
+//
+// Option Helptext String Table
+//
+
+STRINGTABLE
+BEGIN
+    IDS_HELPTEXT_ERROR      "选项处理期间出错。"
+    IDS_HELPTEXT_HEADER     "命令行选项:"
+    IDS_HELPTEXT_FOOTER     "默认设置是下载和安装软件包,除非指定了 --download 或 --local-install。"
+    IDS_HELPTEXT_ALLOW_TEST "考虑标记为测试的软件包版本"
+    IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS
+                            "允许旧的、不受支持的 Windows 版本"
+    IDS_HELPTEXT_ARCH       "要安装的体系结构(x86_64 或 x86)"
+    IDS_HELPTEXT_CATEGORIES "指定要安装的类别"
+    IDS_HELPTEXT_COMPACTOS  "使用 Compact OS(xpress4k、xpress8k、xpress16k、lzx)压缩已安装的文件"
+    IDS_HELPTEXT_DELETE_ORPHANS
+                            "删除孤立包"
+    IDS_HELPTEXT_DISABLE_ANTIVIRUS
+                            "在执行过程中禁用已知或可疑的有缺陷的防病毒软件包"
+    IDS_HELPTEXT_DOWNLOAD   "从互联网下载软件包"
+    IDS_HELPTEXT_FORCE_CURRENT
+                            "为所有软件包选择当前版本"
+    IDS_HELPTEXT_HELP       "打印帮助"
+    IDS_HELPTEXT_INCLUDE_SOURCE
+                            "为每个安装的软件包自动安装源代码"
+    IDS_HELPTEXT_INI_BASENAME
+                            "使用不同的基本名称,例如“foo”,而不是“setup”"
+    IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS
+                            "使用不受信任的密钥并保留所有密钥"
+    IDS_HELPTEXT_LANG       "指定 GUI 语言语言 langid"
+    IDS_HELPTEXT_LOCAL_INSTALL
+                            "从本地目录安装软件包"
+    IDS_HELPTEXT_LOCAL_PACKAGE_DIR
+                            "本地软件包目录"
+    IDS_HELPTEXT_MIRROR_MODE
+                            "从本地目录安装时跳过包可用性检查(要求本地目录是干净的镜像!)"
+    IDS_HELPTEXT_NO_ADMIN   "不检查并强制以管理员身份运行"
+    IDS_HELPTEXT_NO_DESKTOP "禁用桌面快捷方式的创建"
+    IDS_HELPTEXT_NO_REPLACEONREBOOT
+                            "禁用在下次重新启动时替换正在使用的文件"
+    IDS_HELPTEXT_NO_SHORTCUTS
+                            "禁用桌面和开始菜单快捷方式的创建"
+    IDS_HELPTEXT_NO_STARTMENU
+                            "禁用创建开始菜单快捷方式"
+    IDS_HELPTEXT_NO_VERIFY  "不验证 setup.ini 的签名"
+    IDS_HELPTEXT_NO_VERSION_CHECK
+                            "禁止检查是否有较新版本的安装程序可用"
+    IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS
+                            "不要警告已弃用的 Windows 版本"
+    IDS_HELPTEXT_NO_WRITE_REGISTRY
+                            "不要将根安装目录写入注册表"
+    IDS_HELPTEXT_OLD_KEYS   "启用旧的 cygwin.com 密钥"
+    IDS_HELPTEXT_ONLY_SITE  "不要下载镜像列表。 仅使用 -s 指定的站点"
+    IDS_HELPTEXT_PACKAGES   "指定要安装的软件包"
+    IDS_HELPTEXT_PACKAGE_MANAGER
+                            "半有人值守仅选择器模式"
+    IDS_HELPTEXT_PROXY      "HTTP/FTP 代理(主机名:端口号)"
+    IDS_HELPTEXT_PRUNE_INSTALL
+                            "仅将安装删剪为请求的软件包"
+    IDS_HELPTEXT_PUBKEY     "额外公钥文件的 URL 或绝对路径(RFC4880 格式)"
+    IDS_HELPTEXT_QUIET_MODE "无人值守安装模式"
+    IDS_HELPTEXT_REMOVE_CATEGORIES
+                            "指定要卸载的类别"
+    IDS_HELPTEXT_REMOVE_PACKAGES
+                            "指定要卸载的软件包"
+    IDS_HELPTEXT_ROOT       "根安装目录"
+    IDS_HELPTEXT_SEXPR_PUBKEY
+                            "s-expr 格式的额外 DSA 公钥"
+    IDS_HELPTEXT_SITE       "下载网址"
+    IDS_HELPTEXT_SYMLINK_TYPE
+                            "符号链接类型(lnk,本机,系统,wsl)"
+    IDS_HELPTEXT_UNTRUSTED_KEYS
+                            "使用不受信任的已保存额外密钥"
+    IDS_HELPTEXT_UPGRADE_ALSO
+                            "同时升级已安装的软件包"
+    IDS_HELPTEXT_USER_AGENT "用于 HTTP 请求的用户代理字符串"
+    IDS_HELPTEXT_VERBOSE    "详细输出"
+    IDS_HELPTEXT_VERSION    "显示版本"
+    IDS_HELPTEXT_WAIT       "提升时,等待提升的子进程"
+END
diff --git a/root.cc b/root.cc
index 1723a532..ccbd6ae3 100644
--- a/root.cc
+++ b/root.cc
@@ -259,6 +259,18 @@ RootPage::OnInit ()
   if (!get_root_dir ().size())
     read_mounts (std::string ());
   orig_root_dir = get_root_dir();
+
+  if (!nt_sec.isRunAsAdmin())
+    {
+      // disable IDC_ROOT_SYSTEM if not running as admin
+      EnableWindow(GetDlgItem(IDC_ROOT_SYSTEM), FALSE);
+      root_scope = IDC_ROOT_USER;
+    }
+  else
+    {
+      set_default_root_scope();
+    }
+
   load_dialog (GetHWND ());
 }
 
@@ -297,6 +309,11 @@ RootPage::OnNext ()
   Log (LOG_PLAIN) << "root: " << get_root_dir ()
     << (root_scope == IDC_ROOT_USER ? " user" : " system") << endLog;
 
+  if (root_scope == IDC_ROOT_SYSTEM)
+    nt_sec.setAdminGroup ();
+  else
+    nt_sec.resetPrimaryGroup ();
+
   return 0;
 }
 
diff --git a/script.cc b/script.cc
index 6818f4b2..f578ea60 100644
--- a/script.cc
+++ b/script.cc
@@ -37,6 +37,7 @@
 #endif
 #endif
 #include "mklink2.h"
+#include "desktop.h"
 
 static std::string sh, dash;
 static const char *cmd;
@@ -126,6 +127,7 @@ init_run_script ()
 	  if (strcasecmp (p, "comspec") != 0
 	      && strcasecmp (p, "cygwin") != 0
 	      && strcasecmp (p, "path") != 0
+              && strcasecmp (p, "programdata") != 0
 	      && strncasecmp (p, "system", 7) != 0
 	      && strncasecmp (p, "user", 4) != 0
 	      && strcasecmp (p, "windir") != 0)
@@ -139,6 +141,14 @@ init_run_script ()
   SetEnvironmentVariable ("CYGWINROOT", get_root_dir ().c_str());
   SetEnvironmentVariable ("CYGWINFORALL",
                           (root_scope == IDC_ROOT_SYSTEM) ? "-A" : NULL);
+
+  const char *sms = startmenusuffix();
+  if (strlen(sms) > 0)
+    SetEnvironmentVariable ("CYGWIN_START_MENU_SUFFIX", sms);
+
+  if (NoStartMenuOption || NoShortcutsOption)
+    SetEnvironmentVariable ("CYGWIN_SETUP_OPTIONS", "no-startmenu");
+
   sanitize_PATH ();
   SetEnvironmentVariable ("SHELL", "/bin/bash");
   SetEnvironmentVariable ("TEMP", backslash (cygpath ("/tmp")).c_str ());
diff --git a/splash.cc b/splash.cc
index 67731f57..9c0bc4b2 100644
--- a/splash.cc
+++ b/splash.cc
@@ -22,7 +22,7 @@
 #include "ini.h"
 
 #define SPLASH_URL "https://cygwin.com"
-#define SPLASH_COPYRIGHT "Copyright 2000-2022"
+#define SPLASH_COPYRIGHT "Copyright 2000-2023"
 
 static ControlAdjuster::ControlInfo SplashControlsInfo[] = {
   { IDC_SPLASH_TEXT,        CP_STRETCH,   CP_STRETCH },
diff --git a/win32.cc b/win32.cc
index 55072a90..ea3d53af 100644
--- a/win32.cc
+++ b/win32.cc
@@ -308,7 +308,7 @@ NTSecurity::setAdminGroup ()
 }
 
 void
-NTSecurity::setDefaultSecurity (bool isAdmin)
+NTSecurity::setDefaultSecurity ()
 {
   /* Get the processes access token. */
   if (!OpenProcessToken (GetCurrentProcess (),
@@ -350,11 +350,7 @@ NTSecurity::setDefaultSecurity (bool isAdmin)
       NoteFailedAPI ("SetTokenInformation(owner)");
       return;
     }
-  /* Get original primary group.  The token's primary group will be reset
-     to the original group right before we call the postinstall scripts.
-     This is necessary, otherwise, if the installing user is a domain user,
-     the group information created by the postinstall calls to `mkpasswd -c,
-     mkgroup -c' will be plain wrong. */
+  /* Get original primary group */
   if (!GetTokenInformation (token.theHANDLE (), TokenPrimaryGroup,
 			    &primaryGroupSID, sizeof primaryGroupSID, &size))
     {
@@ -362,11 +358,6 @@ NTSecurity::setDefaultSecurity (bool isAdmin)
       primaryGroupSID.pgrp.PrimaryGroup = (PSID) NULL;
     }
   groupSID = primaryGroupSID.pgrp.PrimaryGroup;
-  /* Try to set the primary group to the Administrators group, but only if
-     "Install for all users" has been chosen.  If it doesn't work, we're
-     no admin and that's all there's to say about it. */
-  if (isAdmin)
-    setAdminGroup ();
 }
 
 bool
diff --git a/win32.h b/win32.h
index 02c1d06e..bf3ff101 100644
--- a/win32.h
+++ b/win32.h
@@ -130,7 +130,7 @@ public:
   void resetPrimaryGroup();
   void setAdminGroup ();
   void initialiseWellKnownSIDs ();
-  void setDefaultSecurity(bool isAdmin);
+  void setDefaultSecurity ();
   bool isRunAsAdmin ();
   bool hasSymlinkCreationRights ();
 private:
diff --git a/window.cc b/window.cc
index f13dafc4..5f435cc8 100644
--- a/window.cc
+++ b/window.cc
@@ -462,7 +462,7 @@ BOOL
 Window::TooltipNotificationHandler (LPARAM lParam)
 // this is the handler for TTN_GETDISPINFO notifications
 {
-  NMTTDISPINFO *dispinfo = (NMTTDISPINFO *)lParam;
+  NMTTDISPINFOW *dispinfo = (NMTTDISPINFOW *)lParam;
   int ctrlID;
   std::map<int, int>::iterator findID;
 
@@ -477,9 +477,9 @@ Window::TooltipNotificationHandler (LPARAM lParam)
     // the tooltip length still can't exceed 80 chars.  So, we fetch the
     // resource into our own buffer and use that
 
-    TCHAR buf[2048];
-    LoadString (GetInstance (), findID->second, (LPTSTR)buf,
-	(sizeof (buf) / sizeof (TCHAR)));
+    WCHAR buf[2048];
+    LoadStringW (GetInstance (), findID->second, (LPWSTR)buf,
+                 (sizeof (buf) / sizeof (WCHAR)));
 
     dispinfo->lpszText = buf;
 



More information about the Cygwin-apps-cvs mailing list