如何检测设备是否已安装Miniconda/Anaconda?NSIS安装包开发相关问题
NSIS检测现有conda环境实现方案
你可以按照如下优先级逻辑实现通用conda环境检测,匹配到符合版本要求的环境后直接复用,未匹配到再触发Miniconda下载安装流程:
- 第一步检测环境变量:调用NSIS内置的
ReadEnvStr指令读取PATH环境变量,遍历PATH中的所有目录,查找是否存在conda.exe可执行文件。找到后执行conda -V命令获取版本号,和你要求的最低兼容版本做对比,符合要求则直接复用该环境。 - 第二步检测注册表:Anaconda/Miniconda安装时会默认向注册表写入安装信息,你可以读取以下两个路径下的子项:
- 全局安装路径:
HKEY_LOCAL_MACHINE\Software\Python\ContinuumAnalytics - 当前用户安装路径:
HKEY_CURRENT_USER\Software\Python\ContinuumAnalytics
每个子项对应一个已安装的conda发行版,子项的InstallPath键值即为安装根目录,根目录下的Scripts文件夹中可找到conda.exe,读取后同样校验版本是否符合要求即可。
- 全局安装路径:
- 第三步扫描常见安装路径:前两步未找到时,遍历
C:\ProgramData\、%USERPROFILE%\、C:\等常用位置下的anaconda3、miniconda3目录,查找是否存在符合要求的conda可执行文件。
注册表查找软件可执行路径的可行性与操作方法
该方案完全可行,正规Windows桌面软件安装时都会向注册表写入安装路径、卸载信息等固定字段,可稳定用于定位软件路径。查找指定软件对应注册表项的方法如下:
- 优先查找系统卸载项:绝大多数软件的安装信息都会写入以下三类卸载注册表路径,找到对应软件名称的子项后,读取
InstallLocation或者DisplayIcon键值即可直接获取安装路径/主程序路径:- 全局64位软件卸载项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall - 全局32位软件卸载项:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall - 当前用户安装软件卸载项:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
- 全局64位软件卸载项:
- 查找厂商专属注册表项:部分厂商会在
HKEY_LOCAL_MACHINE\Software或HKEY_CURRENT_USER\Software下创建以厂商/软件名称命名的专属注册表项,这类项的结构更清晰,定位效率更高,比如Anaconda的专属路径就是前面提到的ContinuumAnalytics目录。 - 不确定路径时可自行抓取:在测试机上安装目标软件后,打开系统注册表编辑器,用搜索功能搜索软件名、主程序名、安装目录名,即可快速定位到软件写入的所有注册表项,记录对应路径后在NSIS中用
ReadRegStr指令读取即可。
内容的提问来源于stack exchange,提问作者lsoranco
相关产品推荐
相关产品推荐

