conda / menuinst

Cross platform menu item installation
https://conda.github.io/menuinst/
BSD 3-Clause "New" or "Revised" License
33 stars 41 forks source link

Windows PermissionError: [WinError 5] Zugriff verweige done #191

Closed ReimarBauer closed 1 month ago

ReimarBauer commented 2 months ago

Checklist

What happened?

When using

{
  "$schema": "https://json-schema.org/draft-07/schema",
  "$id": "https://schemas.conda.io/menuinst-1.schema.json",
  "menu_name": "Mission Support System",
  "menu_items": [
    {
      "name": "MSUI ({{ ENV_NAME }})",
      "description": "Mission Support System MSUI",
      "activate": true,
      "icon": "{{ MENU_DIR }}/msui.{{ ICON_EXT }}",
      "command": [
        "{{ PYTHON }}",
        "{{ PREFIX }}/bin/msui"
      ],
      "platforms": {
                "win": {
                    "command": [
                        "{{ PYTHON }}",
                        "{{ SCRIPTS_DIR }}/msui-script.py"
                    ],
                    "file_extensions": [".menuinst"]
                },
                "linux": {

On conda build . it shows valid menuinst JSON document

WARNING (mss): interpreted library (Python) package conda-forge/noarch::future==1.0.0=pyhd8ed1ab_0 in requirements/run but it is not used (i.e. it is overdepending or perhaps statically linked? If that is what you want then add it to `build/ignore_run_exports`)
WARNING (mss): run-exports library package conda-forge/win-64::tk==8.6.13=h5226925_1 in requirements/run but it is not used (i.e. it is overdepending or perhaps statically linked? If that is what you want then add it to `build/ignore_run_exports`)
   INFO (mss): Interpreted package 'mss' is interpreted by 'python'
Validating Menu/*.json files
'Menu\mss_menu.json' is a valid menuinst JSON document
Fixing permissions
Packaged license file/s.
INFO :: Time taken to mark (prefix)
        0 replacements in 0 files was 0.97 seconds

I get on installing

Downloading and Extracting Packages:

Preparing transaction: done
Verifying transaction: done
Executing transaction: - menuinst Exception
Traceback (most recent call last):
  File "C:\Users\user\miniforge\lib\site-packages\conda\gateways\disk\create.py", line 259, in make_menu
    menuinst.install(
  File "C:\Users\user\miniforge\lib\site-packages\menuinst\api.py", line 170, in _install_adapter
    install(metadata, target_prefix=prefix, **kwargs)
  File "C:\Users\user\miniforge\lib\site-packages\menuinst\utils.py", line 426, in wrapper_elevate
    return func(
  File "C:\Users\user\miniforge\lib\site-packages\menuinst\api.py", line 62, in install
    paths += menu_item.create()
  File "C:\Users\user\miniforge\lib\site-packages\menuinst\platforms\win.py", line 167, in create
    self._register_file_extensions()
  File "C:\Users\user\miniforge\lib\site-packages\menuinst\platforms\win.py", line 365, in _register_file_extensions
    register_file_extension(ext, identifier, command, icon=icon, mode=self.menu.mode)
  File "C:\Users\user\miniforge\lib\site-packages\menuinst\platforms\win_utils\registry.py", line 75, in register_file_extension
    winreg.SetValueEx(subkey, "DefaultIcon", 0, winreg.REG_SZ, icon)
PermissionError: [WinError 5] Zugriff verweigedone

Conda Info

conda info

     active environment : wintestenv
    active env location : C:\Users\user\miniforge\envs\wintestenv
            shell level : 2
       user config file : C:\Users\user\.condarc
 populated config files : C:\Users\user\miniforge\.condarc
                          C:\Users\user\.condarc
          conda version : 23.11.0
    conda-build version : 24.3.0
         python version : 3.10.12.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=x86_64
                          __conda=23.11.0=0
                          __win=0=0
       base environment : C:\Users\user\miniforge  (writable)
      conda av data dir : C:\Users\user\miniforge\etc\conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/win-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\user\miniforge\pkgs
                          C:\Users\user\.conda\pkgs
                          C:\Users\user\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\user\miniforge\envs
                          C:\Users\user\.conda\envs
                          C:\Users\user\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/23.11.0 requests/2.31.0 CPython/3.10.12 Windows/10 Windows/10.0.14393 solver/libmamba conda-libmamba-solver/23.11.1 libmambapy/1.5.5
          administrator : False
             netrc file : None
           offline mode : False

Conda Config

conda config --show-sources
==> C:\Users\user\miniforge\.condarc <==
channels:
  - conda-forge

==> C:\Users\user\.condarc <==
channels:
  - conda-forge
  - defaults
report_errors: False

Conda list

conda list --show-channel-urls
# packages in environment at C:\Users\user\miniforge\envs\wintestenv:
#
# Name                    Version                   Build  Channel
alembic                   1.13.1             pyhd8ed1ab_1    conda-forge
appdirs                   1.4.4              pyh9f0ad1d_0    conda-forge
argon2-cffi               23.1.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0          py310h8d17308_4    conda-forge
basemap                   1.4.1           np126py310h507904d_0    conda-forge
basemap-data              1.3.2              pyhd8ed1ab_3    conda-forge
bcrypt                    4.1.2           py310h87d50f1_0    conda-forge
bidict                    0.23.1             pyhd8ed1ab_0    conda-forge
blinker                   1.7.0              pyhd8ed1ab_0    conda-forge
blosc                     1.21.5               hbd69f2e_1    conda-forge
mss                      alpha                py310_1000    local
brotli                    1.1.0                hcfcfb64_1    conda-forge
brotli-bin                1.1.0                hcfcfb64_1    conda-forge
brotli-python             1.1.0           py310h00ffb61_1    conda-forge
bzip2                     1.0.8                hcfcfb64_5    conda-forge
ca-certificates           2024.2.2             h56e8100_0    conda-forge
cachetools                5.3.3              pyhd8ed1ab_0    conda-forge
cartopy                   0.23.0          py310hecd3228_0    conda-forge
certifi                   2024.2.2           pyhd8ed1ab_0    conda-forge
cffi                      1.16.0          py310h8d17308_0    conda-forge
cftime                    1.6.3           py310h3e78b6c_0    conda-forge
chameleon                 3.9.1              pyhd8ed1ab_0    conda-forge
charset-normalizer        3.3.2              pyhd8ed1ab_0    conda-forge
click                     8.1.7           win_pyh7428d3b_0    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
contourpy                 1.2.1           py310h232114e_0    conda-forge
cryptography              42.0.5          py310h6e82f81_0    conda-forge
cycler                    0.12.1             pyhd8ed1ab_0    conda-forge
dataclasses               0.8                pyhc8e2a94_3    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
dnspython                 2.6.1              pyhd8ed1ab_1    conda-forge
elementpath               4.4.0              pyhd8ed1ab_0    conda-forge
email-validator           2.1.1              pyhd8ed1ab_0    conda-forge
email_validator           2.1.1                hd8ed1ab_0    conda-forge
execnet                   2.1.1              pyhd8ed1ab_0    conda-forge
fastkml                   0.12               pyhd8ed1ab_0    conda-forge
flask                     2.3.3              pyhd8ed1ab_0    conda-forge
flask-cors                4.0.0              pyhd8ed1ab_0    conda-forge
flask-httpauth            4.8.0              pyhd8ed1ab_0    conda-forge
flask-login               0.6.3              pyhd8ed1ab_1    conda-forge
flask-mail                0.9.1                      py_2    conda-forge
flask-migrate             4.0.7              pyhd8ed1ab_0    conda-forge
flask-socketio            5.3.6              pyhd8ed1ab_0    conda-forge
flask-sqlalchemy          3.0.3              pyhd8ed1ab_0    conda-forge
flask-wtf                 1.2.1              pyhd8ed1ab_0    conda-forge
fonttools                 4.51.0          py310h8d17308_0    conda-forge
freetype                  2.12.1               hdaf720e_2    conda-forge
fs                        2.4.16             pyhd8ed1ab_0    conda-forge
fs.sshfs                  1.0.2              pyhd8ed1ab_0    conda-forge
fs.webdavfs               0.4.2              pyhd8ed1ab_0    conda-forge
fs_filepicker             0.3.7              pyhd8ed1ab_5    conda-forge
future                    1.0.0              pyhd8ed1ab_0    conda-forge
geos                      3.12.1               h1537add_0    conda-forge
gettext                   0.22.5               h5728263_2    conda-forge
gettext-tools             0.22.5               h7d00a51_2    conda-forge
git                       2.44.0               h57928b3_0    conda-forge
gitdb                     4.0.11             pyhd8ed1ab_0    conda-forge
gitpython                 3.1.43             pyhd8ed1ab_0    conda-forge
glib                      2.80.0               h39d0aa6_5    conda-forge
glib-tools                2.80.0               h0a98069_5    conda-forge
gpxpy                     1.6.2              pyhd8ed1ab_0    conda-forge
greenlet                  3.0.3           py310h00ffb61_0    conda-forge
gst-plugins-base          1.22.9               h001b923_1    conda-forge
gstreamer                 1.22.9               hb4038d2_1    conda-forge
h11                       0.14.0             pyhd8ed1ab_0    conda-forge
hdf4                      4.2.15               h1b1b6ef_5    conda-forge
hdf5                      1.14.3          nompi_h73e8ff5_100    conda-forge
humanfriendly             10.0            py310h5588dad_5    conda-forge
icu                       70.1                 h0e60522_0    conda-forge
idna                      3.7                pyhd8ed1ab_0    conda-forge
importlib-metadata        7.1.0              pyha770c72_0    conda-forge
importlib-resources       6.4.0              pyhd8ed1ab_0    conda-forge
importlib_metadata        7.1.0                hd8ed1ab_0    conda-forge
importlib_resources       6.4.0              pyhd8ed1ab_0    conda-forge
intel-openmp              2024.1.0           h57928b3_965    conda-forge
isodate                   0.6.1              pyhd8ed1ab_0    conda-forge
itsdangerous              2.2.0              pyhd8ed1ab_0    conda-forge
jaraco.classes            3.4.0              pyhd8ed1ab_0    conda-forge
jaraco.context            4.3.0              pyhd8ed1ab_0    conda-forge
jaraco.functools          4.0.0              pyhd8ed1ab_0    conda-forge
jinja2                    3.1.3              pyhd8ed1ab_0    conda-forge
jpeg                      9e                   hcfcfb64_3    conda-forge
jplephem                  2.21               pyh864a33b_0    conda-forge
keyring                   25.1.0             pyh7428d3b_0    conda-forge
kiwisolver                1.4.5           py310h232114e_1    conda-forge
krb5                      1.20.1               heb0366b_0    conda-forge
lcms2                     2.14                 h90d422f_0    conda-forge
lerc                      4.0.0                h63175ca_0    conda-forge
libaec                    1.1.3                h63175ca_0    conda-forge
libasprintf               0.22.5               h5728263_2    conda-forge
libasprintf-devel         0.22.5               h5728263_2    conda-forge
libblas                   3.9.0              22_win64_mkl    conda-forge
libbrotlicommon           1.1.0                hcfcfb64_1    conda-forge
libbrotlidec              1.1.0                hcfcfb64_1    conda-forge
libbrotlienc              1.1.0                hcfcfb64_1    conda-forge
libcblas                  3.9.0              22_win64_mkl    conda-forge
libclang                  15.0.7          default_h3a3e6c3_5    conda-forge
libclang13                15.0.7          default_hf64faad_5    conda-forge
libcurl                   8.5.0                h86230a5_0    defaults
libdeflate                1.14                 hcfcfb64_0    conda-forge
libffi                    3.4.2                h8ffe710_5    conda-forge
libgettextpo              0.22.5               h5728263_2    conda-forge
libgettextpo-devel        0.22.5               h5728263_2    conda-forge
libglib                   2.80.0               h39d0aa6_5    conda-forge
libhwloc                  2.10.0          default_h2fffb23_1000    conda-forge
libiconv                  1.17                 hcfcfb64_2    conda-forge
libintl                   0.22.5               h5728263_2    conda-forge
libintl-devel             0.22.5               h5728263_2    conda-forge
liblapack                 3.9.0              22_win64_mkl    conda-forge
libnetcdf                 4.9.2           nompi_h07c049d_113    conda-forge
libogg                    1.3.4                h8ffe710_1    conda-forge
libpng                    1.6.43               h19919ed_0    conda-forge
libpq                     12.17                h906ac69_0    defaults
libsqlite                 3.45.3               hcfcfb64_0    conda-forge
libssh2                   1.11.0               h7dfc565_0    conda-forge
libtiff                   4.4.0                hc4f729c_5    conda-forge
libvorbis                 1.3.7                h0e60522_0    conda-forge
libwebp                   1.3.2                hcfcfb64_1    conda-forge
libwebp-base              1.3.2                hcfcfb64_1    conda-forge
libxcb                    1.13              hcd874cb_1004    conda-forge
libxml2                   2.12.6               hc3477c8_2    conda-forge
libxslt                   1.1.39               h3df6e99_0    conda-forge
libzip                    1.10.1               h1d365fa_3    conda-forge
libzlib                   1.2.13               hcfcfb64_5    conda-forge
lxml                      5.1.0           py310hba208d0_0    conda-forge
lz4-c                     1.9.4                hcfcfb64_0    conda-forge
m2w64-gcc-libgfortran     5.3.0                         6    conda-forge
m2w64-gcc-libs            5.3.0                         7    conda-forge
m2w64-gcc-libs-core       5.3.0                         7    conda-forge
m2w64-gmp                 6.1.0                         2    conda-forge
m2w64-libwinpthread-git   5.0.0.4634.697f757               2    conda-forge
mako                      1.3.3              pyhd8ed1ab_0    conda-forge
markdown                  3.6                pyhd8ed1ab_0    conda-forge
markupsafe                2.1.5           py310h8d17308_0    conda-forge
matplotlib                3.8.4           py310h5588dad_0    conda-forge
matplotlib-base           3.8.4           py310hc9baf74_0    conda-forge
metpy                     1.6.2              pyhd8ed1ab_0    conda-forge
mkl                       2024.1.0           h66d3029_692    conda-forge
more-itertools            10.2.0             pyhd8ed1ab_0    conda-forge
msys2-conda-epoch         20160418                      1    conda-forge
multidict                 6.0.5           py310h8d17308_0    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
netcdf4                   1.6.5           nompi_py310h6477780_100    conda-forge
numpy                     1.26.4          py310hf667824_0    conda-forge
openjpeg                  2.5.0                hc9384bd_1    conda-forge
openssl                   3.2.1                hcfcfb64_1    conda-forge
owslib                    0.30.0             pyhd8ed1ab_0    conda-forge
packaging                 24.0               pyhd8ed1ab_0    conda-forge
pandas                    2.2.2           py310hecd3228_0    conda-forge
paramiko                  3.4.0              pyhd8ed1ab_0    conda-forge
passlib                   1.7.4              pyhd8ed1ab_1    conda-forge
pcre2                     10.43                h17e33f8_0    conda-forge
pillow                    9.2.0           py310hd4fb230_3    conda-forge
pint                      0.23               pyhd8ed1ab_0    conda-forge
pip                       24.0               pyhd8ed1ab_0    conda-forge
platformdirs              4.2.0              pyhd8ed1ab_0    conda-forge
ply                       3.11               pyhd8ed1ab_2    conda-forge
pooch                     1.8.1              pyhd8ed1ab_0    conda-forge
proj                      9.3.1                ha107b6e_0    defaults
property-cached           1.6.4                      py_0    conda-forge
psycopg2                  2.9.9           py310h2bbff1b_0    defaults
pthread-stubs             0.4               hcd874cb_1001    conda-forge
pthreads-win32            2.9.1                hfa6e2cd_3    conda-forge
pycountry                 22.3.5             pyhd8ed1ab_0    conda-forge
pycparser                 2.22               pyhd8ed1ab_0    conda-forge
pygeoif                   0.7                        py_1    conda-forge
pyjwt                     2.8.0              pyhd8ed1ab_1    conda-forge
pymysql                   1.1.0              pyhd8ed1ab_0    conda-forge
pynacl                    1.5.0           py310h635b8f1_3    conda-forge
pyopenssl                 24.0.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.1.2              pyhd8ed1ab_0    conda-forge
pyproj                    3.6.1           py310h05d47c7_5    conda-forge
pyqt                      5.15.9          py310h1fd54f2_5    conda-forge
pyqt5-sip                 12.12.2         py310h00ffb61_5    conda-forge
pyreadline3               3.4.1           py310h5588dad_3    conda-forge
pysaml2                   7.5.0              pyhd8ed1ab_0    conda-forge
pyshp                     2.3.1              pyhd8ed1ab_0    conda-forge
pysocks                   1.7.1              pyh0701188_6    conda-forge
python                    3.10.14         h4de0772_0_cpython    conda-forge
python-dateutil           2.9.0              pyhd8ed1ab_0    conda-forge
python-engineio           4.8.2              pyhd8ed1ab_0    conda-forge
python-slugify            8.0.4              pyhd8ed1ab_0    conda-forge
python-socketio           5.11.2             pyhd8ed1ab_0    conda-forge
python-tzdata             2024.1             pyhd8ed1ab_0    conda-forge
python_abi                3.10                    4_cp310    conda-forge
pytz                      2024.1             pyhd8ed1ab_0    conda-forge
pywin32-ctypes            0.2.2           py310h5588dad_1    conda-forge
pyyaml                    6.0.1           py310h8d17308_1    conda-forge
qt                        5.15.8               h91493d7_0    conda-forge
qt-main                   5.15.8               h720456b_6    conda-forge
qt-webengine              5.15.8               h5b1ea0b_0    conda-forge
requests                  2.31.0             pyhd8ed1ab_0    conda-forge
scipy                     1.13.0          py310hf667824_0    conda-forge
setuptools                69.5.1             pyhd8ed1ab_0    conda-forge
sgp4                      2.22            py310h220cb41_0    conda-forge
shapely                   2.0.4           py310hacc03b5_0    conda-forge
simple-websocket          1.0.0              pyhd8ed1ab_1    conda-forge
sip                       6.7.12          py310h00ffb61_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
skyfield                  1.48               pyhca7485f_0    conda-forge
skyfield-data             5.0.0              pyhd8ed1ab_0    conda-forge
smmap                     5.0.0              pyhd8ed1ab_0    conda-forge
snappy                    1.2.0                hfb803bf_1    conda-forge
sniffio                   1.3.1              pyhd8ed1ab_0    conda-forge
sqlalchemy                2.0.29          py310h8d17308_0    conda-forge
sqlite                    3.45.3               hcfcfb64_0    conda-forge
tbb                       2021.12.0            h91493d7_0    conda-forge
text-unidecode            1.3                pyhd8ed1ab_1    conda-forge
tk                        8.6.13               h5226925_1    conda-forge
toml                      0.10.2             pyhd8ed1ab_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
tornado                   6.4             py310h8d17308_0    conda-forge
traitlets                 5.14.2             pyhd8ed1ab_0    conda-forge
typing-extensions         4.11.0               hd8ed1ab_0    conda-forge
typing_extensions         4.11.0             pyha770c72_0    conda-forge
tzdata                    2024a                h0c530f3_0    conda-forge
ucrt                      10.0.22621.0         h57928b3_0    conda-forge
unicodecsv                0.14.1             pyhd8ed1ab_2    conda-forge
unicodedata2              15.1.0          py310h8d17308_0    conda-forge
urllib3                   2.2.1              pyhd8ed1ab_0    conda-forge
validate_email            1.3                        py_3    conda-forge
vc                        14.3                hcf57466_18    conda-forge
vc14_runtime              14.38.33130         h82b7239_18    conda-forge
vs2015_runtime            14.38.33130         hcb4865c_18    conda-forge
webdavclient3             3.14.5             pyhd8ed1ab_1    conda-forge
websocket-client          1.7.0              pyhd8ed1ab_0    conda-forge
werkzeug                  2.3.8              pyhd8ed1ab_0    conda-forge
wheel                     0.43.0             pyhd8ed1ab_1    conda-forge
win_inet_pton             1.1.0              pyhd8ed1ab_6    conda-forge
wsproto                   1.2.0              pyhd8ed1ab_0    conda-forge
wtforms                   3.1.2              pyhd8ed1ab_0    conda-forge
xarray                    2024.3.0           pyhd8ed1ab_0    conda-forge
xmlschema                 2.5.1              pyhd8ed1ab_0    conda-forge
xorg-libxau               1.0.11               hcd874cb_0    conda-forge
xorg-libxdmcp             1.1.3                hcd874cb_0    conda-forge
xstatic                   1.0.2              pyh9f0ad1d_0    conda-forge
xstatic-bootstrap         4.5.3.1            pyhd3deb0d_0    conda-forge
xstatic-jquery            3.5.1.1            pyhd8ed1ab_5    conda-forge
xz                        5.2.6                h8d14728_0    conda-forge
yaml                      0.2.5                h8ffe710_2    conda-forge
zipp                      3.17.0             pyhd8ed1ab_0    conda-forge
zlib                      1.2.13               hcfcfb64_5    conda-forge
zstd                      1.5.5                h12be248_0    conda-forge

(wintestenv) C:\Users\user

Additional Context

The program was installed and can be started from the terminal env

I do see it also in the startmenu including the icon image

May be just the error should be shown as a warning?

ReimarBauer commented 2 months ago

without the line

"file_extensions": [".menuinst"]

no PermissionError

and it is also installed into the menu and on the desktop.

marcoesters commented 1 month ago

This is indeed a bug. The problem is that the key to add the icon is not opened with the proper access method. I will have a PR ready for this soon.