mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
GH-95029: Describe Windows Store package isolation and redirection in more detail (GH-95030)
(cherry picked from commit b1924b1006
)
Co-authored-by: Anthony Shaw <anthony.p.shaw@gmail.com>
This commit is contained in:
parent
57375d1d74
commit
e2e8ec0760
1 changed files with 31 additions and 3 deletions
|
@ -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.
|
||||
|
||||
|
@ -335,14 +335,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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue