![]() |
VOOZH | about |
dotnet add package Net4x.DapperLibrary.Installation --version 1.9.9.8
NuGet\Install-Package Net4x.DapperLibrary.Installation -Version 1.9.9.8
<PackageReference Include="Net4x.DapperLibrary.Installation" Version="1.9.9.8" />
<PackageVersion Include="Net4x.DapperLibrary.Installation" Version="1.9.9.8" />Directory.Packages.props
<PackageReference Include="Net4x.DapperLibrary.Installation" />Project file
paket add Net4x.DapperLibrary.Installation --version 1.9.9.8
#r "nuget: Net4x.DapperLibrary.Installation, 1.9.9.8"
#:package Net4x.DapperLibrary.Installation@1.9.9.8
#addin nuget:?package=Net4x.DapperLibrary.Installation&version=1.9.9.8Install as a Cake Addin
#tool nuget:?package=Net4x.DapperLibrary.Installation&version=1.9.9.8Install as a Cake Tool
Helpers to detect and perform basic installation tasks for native components (MSI installers) and to assist Docker installation checks on supported runtimes.
This project contains small utilities used by the DapperLibraries to ensure required native components or tools are available on the host (for example, LocalDB, Docker, or other MSI-packaged dependencies). It provides a minimal download abstraction, a registry-based installed-apps enumerator and an installer orchestrator that can invoke MSIs silently.
InstallationEnsurer / InstallationEnsurerInternal
InstallationEnsurer.GetInstance(ILogger? logger) returns an IInstallationEnsurer.EnsureIsInstalled(IFileDownloader fileDownloader, string urlOrPath, bool useDocker, params string[] keywords) attempts to detect a previously installed product by scanning the Windows uninstall registry for display names that contain all provided keywords.urlOrPath) to a temporary .msi file and invoke msiexec.exe with quiet install arguments.useDocker is true (calls into DapperLibrary.Docker helpers conditionally).IFileDownloader / FileDownloader / InstallationWebClient
IFileDownloader is a tiny abstraction: void DownloadFile(string urlOrPath, string fileName).FileDownloader.Instance uses InstallationWebClient (a thin wrapper around System.Net.WebClient) to download the installer when urlOrPath is a remote URI.Installed-apps detection is Windows-specific and reads:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall (32-bit view) and, on 64-bit OS, the 64-bit view as well.DisplayName values and checks whether the provided keywords all appear in a display name.Installer execution
.msi location and executed via msiexec.exe with a /i ... /q argument to perform a quiet install.Docker support
NET6_0_OR_GREATER) the internal ensurer checks RuntimeInformation and will attempt to invoke DockerInstaller.Instance.EnsureIsInstalled() when useDocker is requested on Windows. The Docker installation flow is platform-specific and may require elevation.var logger = /* obtain logger or null */;
var ensurer = InstallationEnsurer.GetInstance(logger);
var downloader = FileDownloader.Instance; // implements IFileDownloader
// Ensure a component is installed by providing a URL or local path to an MSI
bool installed = ensurer.EnsureIsInstalled(downloader, "https://example.com/mycomponent.msi", useDocker: false, "Component", "Vendor");
GetInstalledApps() relies on the Windows registry and will not function on non-Windows platforms.msiexec.exe and executes downloaded binaries. Only use trusted installer URLs/paths.msiexec flow is intended for Windows/.NET Framework and modern .NET builds running on Windows.IFileDownloader to provide custom download behavior (proxy, authenticated downloads, local caching).IFile/InputOutput.Instance implementation used by the internal ensurer if you need custom I/O behavior in tests.See repository root for license and contribution guidelines.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Framework | net40 net40 is compatible. net403 net403 was computed. net45 net45 is compatible. net451 net451 was computed. net452 net452 was computed. net46 net46 was computed. net461 net461 is compatible. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
Showing the top 2 NuGet packages that depend on Net4x.DapperLibrary.Installation:
| Package | Downloads |
|---|---|
|
Net4x.DapperLibrary.MockSqlServer
Package Description |
|
|
Net4x.Xsd2Db.Base
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.9.9.8 | 165 | 2/2/2026 |
| 1.9.9.7 | 171 | 1/13/2026 |
| 1.9.9.6 | 159 | 1/6/2026 |
| 1.9.9.5 | 163 | 1/6/2026 |
| 1.9.9.4 | 162 | 1/6/2026 |
| 1.9.9.3 | 180 | 1/5/2026 |
| 1.9.9.2 | 164 | 12/30/2025 |
| 1.9.9.1 | 172 | 12/30/2025 |
| 1.9.9 | 265 | 12/22/2025 |
| 1.6.0.12 | 222 | 12/12/2025 |
| 1.6.0.11 | 203 | 12/12/2025 |
| 1.6.0.10 | 529 | 12/9/2025 |
| 1.6.0.9 | 285 | 12/4/2025 |
| 1.6.0.8 | 271 | 12/4/2025 |
| 1.6.0.7 | 337 | 11/30/2025 |
| 1.6.0.6 | 269 | 11/27/2025 |
| 1.6.0.5 | 325 | 11/22/2025 |
| 1.6.0.4 | 227 | 11/16/2025 |
| 1.6.0.3 | 268 | 11/15/2025 |
| 1.6.0.2 | 372 | 11/14/2025 |