# Windows 安装器损坏用户 PATH——将已有条目的盘符冒号 \`C:\`/\`D:\` 写成 \`C;\`/\`D;\`

**URL:** <https://forum.qoder.com/t/windows-path-c-d-c-d/12741>\
**Category:** Bug Reports\
**Tags:** others\
**Created:** [September 22, 2026, 1:14am UTC](https://forum.qoder.com/t/windows-path-c-d-c-d/12741 "2026-09-22T01:14:08Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tstar](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.qoder.com/tstar/32/4855_2.png) [@Tstar](https://forum.qoder.com/u/Tstar)\
**Post date:** [September 22, 2026, 1:14am UTC](https://forum.qoder.com/t/windows-path-c-d-c-d/12741/1 "2026-09-22T01:14:08Z")

</div>

# Windows 安装器损坏用户 PATH——将已有条目的盘符冒号 `C:`/`D:` 写成 `C;`/`D;`

> 严重程度：高（静默破坏系统配置，影响其他软件）

## 环境

- OS：Windows 11（build 26200），x64
- Qoder IDE **1.31.0** ，Windows x64 **用户版安装器** （Inno Setup，带 inno\_updater）
- 安装路径： **自定义非默认路径** （`D:` 盘）
- 安装前用户 PATH（`HKCU\Environment\Path`）已有约 14 个条目

## 问题描述

安装完成后，用户 PATH 中 **与 Qoder 无关的已有条目** 出现损坏：部分条目盘符后的冒号（`:`）被替换为分号（`;`），一个有效条目因此被拆成两个无效条目，等同从 PATH 中静默移除。

## 实际损坏示例（同一次安装中出现 3 处）

| 安装前（正确） | 安装后（损坏） |
| --- | --- |
| `C:\Users\<user>\.dotnet\tools` | `C;\Users\<user>\.dotnet\tools` |
| `C:\Program Files\mingw64\bin` | `C;\Program Files\mingw64\bin` |
| `D:\<custom>\bun\bin`（用户自定义目录） | `D;\<custom>\bun\bin` |

损坏后的 PATH 被解析为幽灵段 `C`（或 `D`）+ 无盘符路径 `\...`，两者均无效。受影响的工具（本例中 bun、gcc/mingw 等）在新开的终端中直接"消失"，且 **全程无任何报错** ，用户通常很久之后才会发现。

同一次写入中，安装器追加的自身条目（Qoder `bin` 目录）是正确的，说明损坏发生在对 **已有内容** 的改写环节。

## 证据（时间线）

1. 安装前几分钟的 `reg export HKCU\Environment` 备份：PATH 完好无损；
2. 备份与检查之间，系统内 **唯一** 对 PATH 的写入操作 = Qoder 1.31.0 安装（自定义路径）；
3. 安装完成后导出检查：出现上述 3 处 `:` → `;` 损坏 + 新增 Qoder bin 条目（前后导出文件可提供）。

## 复现步骤

1. Windows 11，确保用户 PATH 中已有多个含盘符的条目；
2. 记录基线：`reg export HKCU\Environment pre.reg /y`；
3. 运行 Qoder 用户版安装器， **选择非默认安装路径** ；
4. 再次导出：`reg export HKCU\Environment post.reg /y`，对比可见部分已有条目 `X:\` 变为 `X;\`。

## 预期行为

安装器仅向 PATH 追加自己的条目，其余内容 **原样保留** （字节级不变）。

## 相关问题（疑似同源）

以自定义路径安装的 Qoder，在某次 **更新** 后新版出现在默认位置 `%LOCALAPPDATA%\Programs\Qoder IDE`，原自定义目录停留在旧版本不再更新（本机实例：旧版冻结于自定义路径，新版出现在默认位置，形成双份安装）。怀疑安装/更新脚本对"自定义路径 + 已有 PATH"的处理存在系统性缺陷。

## 修复建议

1. 写 PATH 时采用"读取原值 → 仅末尾追加 → 写回"流程，不对已有字符串做任何字符级替换/重建；
2. 排查 Inno Setup 脚本中对 Path 的改写逻辑（疑似把 `:` 误当作分隔符或转义符处理）；
3. 更新逻辑应从注册表 `_is1` 键的 `InstallLocation` 定位原安装目录，定位失败时 **显式报错** ，而不是静默安装到默认位置。

---

<div class="post-metadata">

**Author:** ![Tstar](https://yyz2.discourse-cdn.com/flex010/user_avatar/forum.qoder.com/tstar/32/4855_2.png) [@Tstar](https://forum.qoder.com/u/Tstar)\
**Post date:** [October 13, 2026, 5:24am UTC](https://forum.qoder.com/t/windows-path-c-d-c-d/12741/2 "2026-10-13T05:24:07Z")

</div>

今天更新最新版本后已经恢复的 **用户 PATH** 再次被损坏。

> 版本: 1.31.2  
> VSCode 版本: 1.106.3 (user setup)  
> 提交: fcfc01753018885dfe7894f2e5a8013cb500c629  
> 日期: 2026-09-21T14:30:13.801Z  
> Electron: 42.2.0  
> Chromium: 148.0.7778.97  
> Node.js: 24.15.0  
> V8: 14.8.178.14-electron.0  
> OS: Windows\_NT x64 10.0.26200
