Skip to content

Commit b3dc1fb

Browse files
ADO Lens 0.11.1
ADO Lens 0.11.1
2 parents 5d288d6 + 6a51ca0 commit b3dc1fb

6 files changed

Lines changed: 47 additions & 10 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## 0.11.1 — 2026-10-27
4+
5+
- Fixed: the program did not start ("Failed to determine default extraction location") when TEMP pointed to a folder
6+
that no longer exists - the Temp\<n> folder of a remote desktop session after a clean-up - e.g. from the Start menu
7+
or cmd (PowerShell creates that folder again, so it worked there). The SQLite library (e_sqlite3.dll) is now next
8+
to adolens.exe instead of being extracted to TEMP at start, and the installer renames it to *.old like a running
9+
adolens.exe when an open Claude session holds it. Images of attachments saved by the CLI create the TEMP folder
10+
when it is missing.
11+
312
## 0.11.0 — 2026-10-26
413

514
Settings in a window.

‎pack.ps1‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ New-Item -ItemType Directory -Force -Path $stage | Out-Null
3333

3434
$publishArgs = @(
3535
'publish', $proj, '-c', 'Release', '-r', 'win-x64', '-o', (Join-Path $stage 'bin'), '--nologo',
36-
'--self-contained', 'true', '-p:PublishSingleFile=true', '-p:IncludeNativeLibrariesForSelfExtract=true',
36+
# Native libraries (SQLite: e_sqlite3.dll) stay next to the exe instead of being extracted to TEMP at start: the TEMP
37+
# of a remote desktop session (Temp\<n>) may no longer exist, and the exe would not start at all (Start menu, cmd).
38+
'--self-contained', 'true', '-p:PublishSingleFile=true', '-p:IncludeNativeLibrariesForSelfExtract=false',
3739
'-p:EnableCompressionInSingleFile=true', '-p:PublishReadyToRun=true',
3840
# No debug information: a release build would otherwise carry the local path of its .pdb file.
3941
'-p:DebugType=None', '-p:DebugSymbols=false'

‎packaging/inno/ado-lens.iss‎

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -589,16 +589,40 @@ begin
589589
end;
590590
end;
591591
592-
{ A running adolens.exe (an open Claude session) cannot be overwritten but can be renamed; the server removes *.old
593-
files when it starts. }
594-
function PrepareToInstall(var NeedsRestart: Boolean): String;
592+
{ Files of the program's bin folder matching Pattern get the suffix .<time>.old. The names are collected first: renaming while
593+
enumerating could give a file twice. }
594+
procedure RenameInUse(Pattern: String);
595595
var
596-
Exe: String;
596+
Bin, Stamp: String;
597+
Found: TFindRec;
598+
Names: TArrayOfString;
599+
I: Integer;
600+
begin
601+
Bin := ExpandConstant('{app}\bin\');
602+
Stamp := GetDateTimeString('yyyymmddhhnnss', #0, #0);
603+
if FindFirst(Bin + Pattern, Found) then
604+
try
605+
repeat
606+
if (Found.Attributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
607+
begin
608+
SetArrayLength(Names, GetArrayLength(Names) + 1);
609+
Names[GetArrayLength(Names) - 1] := Found.Name;
610+
end;
611+
until not FindNext(Found);
612+
finally
613+
FindClose(Found);
614+
end;
615+
for I := 0 to GetArrayLength(Names) - 1 do
616+
RenameFile(Bin + Names[I], Bin + Names[I] + '.' + Stamp + '.old');
617+
end;
618+
619+
{ A running adolens.exe (an open Claude session) and the SQLite library it loaded (e_sqlite3.dll) cannot be
620+
overwritten but can be renamed; the program removes *.old files when it starts. }
621+
function PrepareToInstall(var NeedsRestart: Boolean): String;
597622
begin
598623
Result := '';
599-
Exe := ExpandConstant('{app}\bin\adolens.exe');
600-
if FileExists(Exe) then
601-
RenameFile(Exe, Exe + '.' + GetDateTimeString('yyyymmddhhnnss', #0, #0) + '.old');
624+
RenameInUse('*.exe');
625+
RenameInUse('*.dll');
602626
end;
603627
604628
procedure CurStepChanged(CurStep: TSetupStep);

‎release.ps1‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ $archive = [IO.Compression.ZipFile]::OpenRead($zip)
247247
$entries = @($archive.Entries | ForEach-Object { $_.FullName })
248248
$archive.Dispose()
249249
Remove-Item $tmp -Recurse -Force
250-
foreach ($e in 'ado-lens/install.ps1', 'ado-lens/bin/adolens.exe', 'ado-lens/CHANGELOG.md', 'ado-lens/SECURITY.md') {
250+
foreach ($e in 'ado-lens/install.ps1', 'ado-lens/bin/adolens.exe', 'ado-lens/bin/e_sqlite3.dll', 'ado-lens/CHANGELOG.md', 'ado-lens/SECURITY.md') {
251251
if ($entries -notcontains $e) { Fail "$asset has no $e (entries: $($entries -join ', '))" }
252252
}
253253
Ok "${asset}: SHA-256 matches, layout ok, $(if ($Pre) { 'test release' } else { 'regular release' })"

‎src/AdoLens/AdoLens.csproj‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<AssemblyTitle>ADO Lens for Azure DevOps</AssemblyTitle>
2626
<Description>Azure DevOps (work items, boards, wiki, Git and TFVC, pipelines) served to AI assistants over MCP</Description>
2727
<Copyright>Copyright © 2026 WillowDev</Copyright>
28-
<Version>0.11.0</Version>
28+
<Version>0.11.1</Version>
2929
</PropertyGroup>
3030

3131
<ItemGroup>

‎src/AdoLens/Cli.cs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -935,6 +935,8 @@ public async Task<int> AttachmentsAsync()
935935
foreach (var i in images)
936936
{
937937
// A terminal cannot show images: they are written to the temporary folder.
938+
// TEMP of a remote desktop session may be gone: create it.
939+
Directory.CreateDirectory(Path.GetTempPath());
938940
var path = Path.Combine(Path.GetTempPath(), $"adolens-{id}-{Guid.NewGuid():N}"[..24] + (i.Mime == "image/jpeg" ? ".jpg" : "." + i.Mime[6..]));
939941
await File.WriteAllBytesAsync(path, i.Bytes);
940942
Console.WriteLine($"image: {path}");

0 commit comments

Comments
 (0)