Skip to content

Commit 72d432a

Browse files
committed
Initial release
Claude Code Install Manager v0.1.0. Single-file Windows batch script (plus optional signed PE launcher) that works around upstream Claude Code installation pain on Windows: multi-location install drift across native installer / WinGet / npm, PATH changes not propagating to running shells, the Claude Desktop App execution alias hijacking the 'claude' command, SYSTEM-profile leftovers from accidental elevated installs, and the lack of any built-in diagnostic or repair path. Subcommands: install, update, uninstall, repair, doctor, path, version, where, help, repair-system, disable-desktop-alias. doctor diagnoses 12+ documented upstream anthropics/claude-code issues from a single command. Long operations show a spinner with mm:ss elapsed time. Errors include actionable next-step hints. Ships with MIT LICENSE (Simtabi LLC), Contributor Covenant 2.1, Keep-a-Changelog CHANGELOG, CONTRIBUTING / SECURITY docs, Pester tests, GitHub Actions CI plus tag-driven signed release workflow (PFX-from-secret and Azure Trusted Signing paths), and Dependabot config.
0 parents  commit 72d432a

24 files changed

Lines changed: 3990 additions & 0 deletions

.editorconfig

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
indent_style = space
9+
indent_size = 4
10+
11+
# Batch files: CRLF is the platform-native line ending; cmd's parser
12+
# tolerates LF but a CRLF file is the safer default for Windows toolchains
13+
# that touch it (signtool wrappers, MSBuild tasks, etc.).
14+
[*.{cmd,bat}]
15+
end_of_line = crlf
16+
indent_size = 4
17+
18+
[*.{ps1,psm1,psd1}]
19+
end_of_line = crlf
20+
indent_size = 4
21+
22+
[*.cs]
23+
end_of_line = crlf
24+
indent_size = 4
25+
26+
[*.{md,markdown}]
27+
indent_size = 2
28+
trim_trailing_whitespace = false
29+
30+
[*.{yml,yaml}]
31+
indent_size = 2
32+
33+
[Makefile]
34+
indent_style = tab

.gitattributes

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Default: let git decide whether a file is text and normalize to LF
2+
# on commit, then check out with the platform-native line ending on
3+
# Windows clones.
4+
* text=auto
5+
6+
# Windows-toolchain files always need CRLF on disk on Windows. The
7+
# cmd parser tolerates LF, but signtool, MSBuild, and several
8+
# editors do not, so we pin these explicitly.
9+
*.cmd text eol=crlf
10+
*.bat text eol=crlf
11+
*.ps1 text eol=crlf
12+
*.psm1 text eol=crlf
13+
*.psd1 text eol=crlf
14+
*.cs text eol=crlf
15+
16+
# Unix-style files keep LF regardless of clone platform.
17+
*.md text eol=lf
18+
*.markdown text eol=lf
19+
*.yml text eol=lf
20+
*.yaml text eol=lf
21+
*.sh text eol=lf
22+
.editorconfig text eol=lf
23+
.gitignore text eol=lf
24+
.gitattributes text eol=lf
25+
26+
# Treat these as text without an extension.
27+
LICENSE text eol=lf
28+
CHANGELOG text eol=lf
29+
CONTRIBUTING text eol=lf
30+
SECURITY text eol=lf
31+
32+
# Binary blobs that should never be modified by git's normalization.
33+
*.exe binary
34+
*.dll binary
35+
*.pdb binary
36+
*.pfx binary
37+
*.p12 binary
38+
*.cer binary
39+
*.crt binary
40+
*.snk binary
41+
*.png binary
42+
*.jpg binary
43+
*.jpeg binary
44+
*.gif binary
45+
*.ico binary
46+
*.zip binary
47+
*.tar binary
48+
*.tar.gz binary
49+
*.7z binary
50+
51+
# Export-ignore: keep CI / dev-only files out of `git archive` zipballs.
52+
.github/ export-ignore
53+
scripts/tests/ export-ignore
54+
.gitattributes export-ignore
55+
.gitignore export-ignore
56+
.editorconfig export-ignore
57+
build.ps1 export-ignore
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
name: Bug report
2+
description: Something the wrapper does (or doesn't do) that looks wrong.
3+
labels: [bug]
4+
assignees: []
5+
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thanks for the report. **Please run `claude-code-install-manager doctor` and paste the full output below.**
11+
Most install / PATH / Desktop-App-alias issues need that to triage.
12+
13+
For security vulnerabilities, do **not** open a public issue. See
14+
[SECURITY.md](../SECURITY.md).
15+
16+
- type: input
17+
id: wrapper_version
18+
attributes:
19+
label: Wrapper version
20+
description: Output of `claude-code-install-manager version`.
21+
placeholder: Claude Code Install Manager 0.1.0
22+
validations:
23+
required: true
24+
25+
- type: dropdown
26+
id: install_method
27+
attributes:
28+
label: How was Claude Code installed?
29+
options:
30+
- Native installer (irm https://claude.ai/install.ps1 | iex)
31+
- WinGet (winget install Anthropic.ClaudeCode)
32+
- npm (npm install -g @anthropic-ai/claude-code)
33+
- Not installed yet (this is an install failure)
34+
- Not sure
35+
validations:
36+
required: true
37+
38+
- type: dropdown
39+
id: shell
40+
attributes:
41+
label: Where did you run the wrapper?
42+
options:
43+
- cmd.exe (Command Prompt)
44+
- PowerShell (pwsh 7+)
45+
- PowerShell (Windows PowerShell 5.1)
46+
- Windows Terminal
47+
- VS Code integrated terminal
48+
- Git Bash / WSL (not supported, but tell us if you got here)
49+
- Other
50+
validations:
51+
required: true
52+
53+
- type: input
54+
id: windows_version
55+
attributes:
56+
label: Windows version
57+
description: Output of `ver`.
58+
placeholder: Microsoft Windows [Version 10.0.22631.4602]
59+
validations:
60+
required: true
61+
62+
- type: textarea
63+
id: doctor
64+
attributes:
65+
label: doctor output
66+
description: Full output of `claude-code-install-manager doctor`. Paste raw, no need to redact paths.
67+
render: shell
68+
validations:
69+
required: true
70+
71+
- type: textarea
72+
id: repro
73+
attributes:
74+
label: Steps to reproduce
75+
description: Exact commands you ran, in order.
76+
placeholder: |
77+
1. claude-code-install-manager install
78+
2. claude --version
79+
render: shell
80+
validations:
81+
required: true
82+
83+
- type: textarea
84+
id: expected
85+
attributes:
86+
label: Expected behavior
87+
placeholder: claude --version should print 1.x.x
88+
validations:
89+
required: true
90+
91+
- type: textarea
92+
id: actual
93+
attributes:
94+
label: Actual behavior
95+
description: Include any error message, exit code, and the lines around the failure.
96+
render: shell
97+
validations:
98+
required: true
99+
100+
- type: checkboxes
101+
id: confirmations
102+
attributes:
103+
label: Confirmations
104+
options:
105+
- label: I'm running as a standard user (not Administrator).
106+
required: false
107+
- label: I closed and reopened my terminal after install/update before testing.
108+
required: false
109+
- label: I checked the README's "Known upstream issues" table and this isn't already covered.
110+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
blank_issues_enabled: false
2+
3+
contact_links:
4+
- name: Security vulnerability
5+
url: https://github.com/laranail/claude-code-install-manager/security/policy
6+
about: |
7+
Do NOT file a public issue for security problems. See SECURITY.md
8+
for the private disclosure address (opensource@simtabi.com).
9+
10+
- name: Upstream Claude Code bug
11+
url: https://github.com/anthropics/claude-code/issues
12+
about: |
13+
If the problem is in Claude Code itself (claude.exe, the install.ps1
14+
script, etc.), file it upstream. This wrapper only addresses
15+
Windows-side installation / PATH issues.
16+
17+
- name: Claude Desktop App bug
18+
url: https://support.claude.com
19+
about: |
20+
Issues with the Claude Desktop App (not the CLI) belong with Anthropic
21+
Support, not this repo.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Feature request
2+
description: Suggest a new subcommand, flag, or behavior.
3+
labels: [enhancement]
4+
assignees: []
5+
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Before filing: this wrapper exists to paper over **real, documented upstream issues**
11+
in Claude Code's Windows installation. New features should map to a specific problem.
12+
13+
If your request is "make it do X", please first describe the **problem** you hit, so
14+
we can decide whether X is the right shape of fix.
15+
16+
- type: textarea
17+
id: problem
18+
attributes:
19+
label: What problem are you running into?
20+
description: |
21+
Be concrete. "I had to manually do Y after installing because Z" beats "the wrapper
22+
should support Y".
23+
placeholder: |
24+
After running `install`, my terminal still couldn't find `claude` because ...
25+
validations:
26+
required: true
27+
28+
- type: textarea
29+
id: proposed
30+
attributes:
31+
label: Proposed change
32+
description: |
33+
What subcommand, flag, or behavior would solve it? Bullet points are fine.
34+
validations:
35+
required: true
36+
37+
- type: input
38+
id: upstream
39+
attributes:
40+
label: Upstream issue (if any)
41+
description: |
42+
Link to an `anthropics/claude-code` issue that describes the underlying problem,
43+
if one exists. Helps us cite the motivation in code comments.
44+
placeholder: https://github.com/anthropics/claude-code/issues/12345
45+
46+
- type: textarea
47+
id: alternatives
48+
attributes:
49+
label: Alternatives considered
50+
description: Anything you tried that didn't work, or other ways this could be done.
51+
52+
- type: checkboxes
53+
id: scope
54+
attributes:
55+
label: Scope check
56+
options:
57+
- label: This is about installation / PATH / diagnostics — not Claude Code itself.
58+
required: true
59+
- label: I read the "Scope" section of CONTRIBUTING.md.
60+
required: false

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<!--
2+
Thanks for sending a PR. Please fill out the sections below. Anything
3+
listed in CONTRIBUTING.md's "Pull request checklist" applies here too.
4+
-->
5+
6+
## What this changes
7+
8+
<!-- One or two sentences. The diff already shows the *what*; explain
9+
the *why*. -->
10+
11+
## Motivation
12+
13+
<!-- What problem prompted the change? Link an upstream
14+
anthropics/claude-code issue if applicable. Real-world repro
15+
scenarios are persuasive. -->
16+
17+
## Scope
18+
19+
- [ ] This change maps to a real, documented problem (not a cosmetic
20+
refactor).
21+
- [ ] The change is limited to the surface area named in the title.
22+
- [ ] No new external dependencies that don't ship with Windows.
23+
24+
## Testing
25+
26+
<!-- Describe how you tested. Include the OS / shell / Claude Code
27+
install method on the test machine. The CI workflow handles the
28+
basic build + doctor + Pester checks; this section is for
29+
scenarios CI can't cover. -->
30+
31+
- [ ] `claude-code-install-manager.cmd help` renders correctly.
32+
- [ ] `claude-code-install-manager.cmd doctor` renders correctly.
33+
- [ ] If touching PATH handling: confirmed
34+
`[Environment]::GetEnvironmentVariable('Path','User')` before/after.
35+
- [ ] If touching the spinner: tested with and without `CCT_NO_SPIN=1`.
36+
- [ ] If touching `repair-system`: tested no-op path on a clean
37+
machine. (Don't fabricate a leftover by hand.)
38+
- [ ] If touching `disable-desktop-alias`: tested with Desktop App
39+
installed.
40+
41+
## Documentation
42+
43+
- [ ] `CHANGELOG.md` has an `[Unreleased]` entry under the right
44+
section (Added / Changed / Fixed / Security / Deprecated /
45+
Removed).
46+
- [ ] README updated if a user-visible behavior or flag changed.
47+
- [ ] If adding a subcommand: appears in `help`, in the README
48+
**Subcommands** table, and follows the `:CmdXxx` naming
49+
convention.
50+
51+
## Linked issues
52+
53+
<!-- Closes #N, or Refs #N. -->

.github/RELEASE_NOTES_TEMPLATE.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<!--
2+
Release notes for Claude Code Install Manager. The release.yml workflow
3+
appends this template to GitHub's auto-generated release notes, which
4+
list merged PRs since the last tag. Customize per-release in the
5+
"Highlights" section below; leave the rest as a stable reminder of
6+
what the artifacts are and how to use them.
7+
-->
8+
9+
## Highlights
10+
11+
<!-- Pick the 2-4 most user-visible changes from CHANGELOG.md and put
12+
them here in plain prose. Link to anthropics/claude-code issues
13+
for the ones that fix an upstream problem. -->
14+
15+
## Artifacts
16+
17+
| File | Contents |
18+
|--------------------------------------------|-------------------------------------------------------|
19+
| `claude-code-install-manager.exe` | Signed launcher. Run this if your org enforces SmartScreen / unsigned-binary policies. |
20+
| `claude-code-install-manager.cmd` | The actual wrapper. The `.exe` re-executes this from the same directory. |
21+
| `SHA256SUMS` | Post-signing SHA256 hashes for both files. |
22+
| `claude-code-install-manager-vX.Y.Z-windows.zip` | All three above, bundled. |
23+
24+
Run `claude-code-install-manager.exe help` (or just the `.cmd`) to get
25+
started.
26+
27+
## Verifying
28+
29+
Download `claude-code-install-manager.exe`, `claude-code-install-manager.cmd`,
30+
and `SHA256SUMS` into one directory, then:
31+
32+
```powershell
33+
# Optional: also grab verify-release.ps1 from the repo's scripts/ dir.
34+
.\verify-release.ps1
35+
```
36+
37+
Or check the signature manually:
38+
39+
```powershell
40+
Get-AuthenticodeSignature .\claude-code-install-manager.exe |
41+
Format-List Status, SignerCertificate
42+
```
43+
44+
You should see `Status : Valid` and a publisher subject containing
45+
`Simtabi LLC`.
46+
47+
## Upgrading
48+
49+
This is a per-user tool. To upgrade in place:
50+
51+
1. Replace your existing `claude-code-install-manager.cmd` (and `.exe`
52+
if you have it) with the new files.
53+
2. Run `claude-code-install-manager doctor` to confirm nothing
54+
regressed.
55+
56+
## Full change list
57+
58+
See [CHANGELOG.md](https://github.com/laranail/claude-code-install-manager/blob/main/CHANGELOG.md).

0 commit comments

Comments
 (0)