summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-07-21 00:10:32 (GMT)
committerGitHub <noreply@github.com>2022-07-21 00:10:32 (GMT)
commitb60c3d2f7efede5d80bde2aec0b558b12814a0b3 (patch)
tree86bba57ba5567cb3cd6591586f12d83e24a01274
parentcbe3ad51ed63e2e5afc408f0bbeb8bb0e9fb7f44 (diff)
downloadcpython-b60c3d2f7efede5d80bde2aec0b558b12814a0b3.zip
cpython-b60c3d2f7efede5d80bde2aec0b558b12814a0b3.tar.gz
cpython-b60c3d2f7efede5d80bde2aec0b558b12814a0b3.tar.bz2
GH-95029: Describe Windows Store package isolation and redirection in more detail (GH-95030)
(cherry picked from commit b1924b10069fb797845284552fb9da931b1ffdb9) Co-authored-by: Anthony Shaw <anthony.p.shaw@gmail.com>
-rw-r--r--Doc/using/windows.rst34
1 files changed, 31 insertions, 3 deletions
diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst
index cbc70b6..992767a 100644
--- a/Doc/using/windows.rst
+++ b/Doc/using/windows.rst
@@ -34,7 +34,7 @@ developers using Python for any kind of project.
:ref:`windows-store` is a simple installation of Python that is suitable for
running scripts and packages, and using IDLE or other development environments.
-It requires Windows 10, but can be safely installed without corrupting other
+It requires Windows 10 and above, but can be safely installed without corrupting other
programs. It also provides many convenient commands for launching Python and
its tools.
@@ -331,14 +331,42 @@ Python in Start and right-click to select Uninstall. Uninstalling will
remove all packages you installed directly into this Python installation, but
will not remove any virtual environments
-Known Issues
+Known issues
------------
+Redirection of local data, registry, and temporary paths
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
Because of restrictions on Microsoft Store apps, Python scripts may not have
-full write access to shared locations such as ``TEMP`` and the registry.
+full write access to shared locations such as :envvar:`TEMP` and the registry.
Instead, it will write to a private copy. If your scripts must modify the
shared locations, you will need to install the full installer.
+At runtime, Python will use a private copy of well-known Windows folders and the registry.
+For example, if the environment variable :envvar:`%APPDATA%` is :file:`c:\\Users\\<user>\\AppData\\`,
+then when writing to :file:`C:\\Users\\<user>\\AppData\\Local` will write to
+:file:`C:\\Users\\<user>\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\Local\\`.
+
+When reading files, Windows will return the file from the private folder, or if that does not exist, the
+real Windows directory. For example reading :file:`C:\\Windows\\System32` returns the contents of :file:`C:\\Windows\\System32`
+plus the contents of :file:`C:\\Program Files\\WindowsApps\\package_name\\VFS\\SystemX86`.
+
+You can find the real path of any existing file using :func:`os.path.realpath`:
+
+.. code-block:: python
+
+ >>> import os
+ >>> test_file = 'C:\\Users\\example\\AppData\\Local\\test.txt'
+ >>> os.path.realpath(test_file)
+ 'C:\\Users\\example\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\Local\\test.txt'
+
+When writing to the Windows Registry, the following behaviors exist:
+
+* Reading from ``HKLM\\Software`` is allowed and results are merged with the :file:`registry.dat` file in the package.
+* Writing to ``HKLM\\Software`` is not allowed if the corresponding key/value exists, i.e. modifying existing keys.
+* Writing to ``HKLM\\Software`` is allowed as long as a corresponding key/value does not exist in the package
+ and the user has the correct access permissions.
+
For more detail on the technical basis for these limitations, please consult
Microsoft's documentation on packaged full-trust apps, currently available at
`docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-scenes