HlinLink · guide bundle 0.1.2 · program 0.1.1
Move the links.
Keep the originals.
See which Excel and PowerPoint links point to an old location. Review an explicit map, then create new copies with an audit you can inspect.
Local Python toolNo activation or account$9.99 onceInstall once, in its own folder
Extract the entire HlinLink-0.1.2-guide-bundle.zip. Open a terminal in that extracted folder. You need Python 3.10 or later. Python 3.12 on Windows and Python 3 on Linux were exercised for this release; other environments remain unverified.
The new wheel is directly in app/. The older archive in program/ is preserved for its existing users and permissions; it is not needed for the updated workflow.
Windows PowerShell
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --no-index --no-deps app/hlinlink-0.1.1-py3-none-any.whl
.\.venv\Scripts\python.exe -m hlinlink --helpLinux terminal
python3 -m venv .venv
.venv/bin/python -m pip install --no-index --no-deps app/hlinlink-0.1.1-py3-none-any.whl
.venv/bin/python -m hlinlink --helpYou do not need to activate the environment or change a PowerShell execution policy. In the steps below replace PYTHON with .\.venv\Scripts\python.exe on Windows or .venv/bin/python on Linux. Run from the extracted bundle folder.
Your first result: two fictional files
The Harborview exercise contains a workbook and presentation with two fictional old links. These minimal OOXML fixtures demonstrate the commands and reports; they are not Office-authored documents and are not intended to open in Office. The destination uses example.invalid and intentionally does not exist. No link is fetched.
1. Inventory the links
PYTHON -m hlinlink scan examples/hlinlink/input --report first-scanOpen first-scan/audit.html. It lists two files and two supported links. Choose Edit the mapping template or open first-scan/mapping-template.csv in a CSV editor.

2. Fill the mapping starter
Keep old_prefix as generated. Set new_prefix on each row to the corresponding fictional destination:
S:\Projects\Harborview\Q3 costs.xlsx
→ https://example.invalid/sites/Projects/Harborview/Q3 costs.xlsx
\\fs01\Finance\Harborview\Budget 2026.xlsx
→ https://example.invalid/sites/Finance/Harborview/Budget 2026.xlsxKeep case_sensitive as false. Save as CSV. Every retained row needs a destination; remove rows you intentionally do not want to map. The supplied examples/hlinlink/mapping.csv is an alternative folder-prefix example; first practise with the generated exact paths.
3. Review before writing copies
PYTHON -m hlinlink preview examples/hlinlink/input --mapping first-scan/mapping-template.csv --plan first-plan.json --report first-previewOpen first-preview/audit.html. Both links should be mapped; spaces in HTTPS targets become %20. Check the old and new destinations. Preview writes a plan and reports; it does not alter your Office files.

4. Create copies and keep the audit
PYTHON -m hlinlink apply --plan first-plan.json --output first-copies --report first-applyExpected: 2 copied, 0 failed/skipped. Open first-apply/audit.html or its CSV/JSON companions. Your examples/hlinlink/input files remain unchanged. Use new plan, report and output names on the next run: existing files are never overwritten.

Use your own files carefully
- Keep a backup and put copies of the files you are authorised to inspect in a separate input folder.
- Scan. Review unsupported features and files as well as the eligible links. Fill the generated mapping starter with destinations you know are correct.
- Preview. Exact paths are the starting point; shorten an old prefix to a folder only when every path under it should move together. Longest matching prefixes win at path boundaries. Case handling is explicit.
- Apply into a new directory. The plan binds source hashes; edits since preview require a new preview. Existing output files are not overwritten.
- Open the new copies in your own Excel or PowerPoint environment. Inspect links, refresh behavior and content before replacing or delivering anything. Keep the audit with your migration records.
Each phase writes HTML, CSV and JSON. Scan adds a mapping CSV; preview adds the plan you name. An apply exit code of 2 means at least one failure or skip, including Word or unsupported input. Supported files in a mixed batch may still produce copies, so read the per-file audit.
Know exactly what can change
Supported rewrite scope
.xlsxand.xlsm: supported external workbook relationship parts..pptx: external hyperlink relationships.- Absolute drive, UNC and file-URI mapping; HTTPS destinations for supported ordinary links.
- Validated Excel alternate-URL groups retain their original forms; ambiguous groups are left unchanged.
Outside this scope
- Word
.docxis inventory-only, even with a manual or old saved plan. - Legacy Office, signed/encrypted or malformed packages, and unsafe ZIP inputs are refused or skipped.
- No rewriting of formulas, Power Query, data connections, OLE/DDE, embedded objects or macro code.
- No target existence/access check, SharePoint sign-in, migration guarantee or automatic backup replacement.
Only selected relationship XML changes. Other ZIP members retain their uncompressed bytes; macro bytes are preserved without executing macros. Package compression can differ. Limits: 2,000 members, 200 MiB uncompressed content, 10 MiB per XML/relationships member, 200:1 expansion ratio. These are package limits, not a verified folder-scale guarantee. See the detailed support matrix.
What was actually verified
The final 0.1.1 wheel was installed on Windows with Python 3.12. Generated exact-path and historical folder-prefix mappings reproduced every uncompressed output member of two preserved Office-authored XLSX/PPTX fixtures. Those historical outputs passed native Office 16 open, refresh where applicable, save and reopen on 25 September 2026. Today's check establishes output parity, not a fresh Office roundtrip.
A fresh native attempt could not open even the unchanged control files in the available noninteractive Windows session; the cause is not established. Word/native macro behavior, other Office encodings, all hosts, real customer migrations and SharePoint authentication remain unverified. Always validate your copies in your environment.
When something needs attention
Blank destination
Fill new_prefix on the reported CSV row, or remove it deliberately. Do not put explanatory text in a path column.
Nothing matched
Check drive/share spelling, path boundaries and case handling. A URL or relative path outside the documented grouped-link case is not a supported source prefix. Inspect the unsupported reason in the audit.
Output or report already exists
Choose a new name. The program refuses overwrite so your previous evidence remains intact.
Word appears in a mixed folder
It remains visible for inventory but cannot be copied by apply. The audit records the skip and apply exits 2. Separate it from the intended Excel/PowerPoint migration.
Python or venv is missing
Install Python for your operating system, including its venv/pip components. The supplied wheel itself has no third-party runtime dependencies. Use the full environment Python path shown above.
Support and removal
Contact Perunlight support with bundle/program version, Python/Office version and a minimal fictional reproduction. Do not send confidential workbooks, credentials or customer data. To remove the local installation, delete its .venv folder; keep any reports and output copies you need.
Your permissions stay intact
The bundle costs $9.99 USD once; tax and final total appear at checkout. No subscription or activation is added. The original free preview archive remains byte-identical, with its original permission to use it locally, including your own work. The updated program also retains the included preview permission. The purchase supplies this packaged program version, illustrated guide and examples; it does not revoke existing free rights or promise future updates.
Guide bundle terms · Program preview permission · Third-party notices · Changes
Guide 31 October 2026. Screenshots are actual program reports using fictional inputs. No customer migration or sales outcome is claimed.