90 lines
6.2 KiB
Markdown
90 lines
6.2 KiB
Markdown
|
|
---
|
||
|
|
source_files:
|
||
|
|
- DataPRO/Modules/InstallerCustomActions/Common/Properties/AssemblyInfo.cs
|
||
|
|
- DataPRO/Modules/InstallerCustomActions/Common/Properties/Settings.Designer.cs
|
||
|
|
generated_at: "2026-04-16T04:44:41.257169+00:00"
|
||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||
|
|
schema_version: 1
|
||
|
|
sha256: "3a215b4dad8b4fc8"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Properties
|
||
|
|
|
||
|
|
## Documentation Page: `Installer.Common` Module
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 1. **Purpose**
|
||
|
|
|
||
|
|
This module (`Installer.Common`) is a shared .NET assembly containing configuration and metadata constants used across custom actions in the DataPRO Windows Installer infrastructure. Its primary role is to centralize registry path keys, value names, and application identifiers used during installation, upgrade, and uninstallation logic—specifically for querying and interacting with Windows Installer (MSI) metadata stored in the registry. It does *not* contain executable installer logic itself but provides stable, versioned configuration values to ensure consistency across installer components.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. **Public Interface**
|
||
|
|
|
||
|
|
The module exposes **no public types** (classes, methods, or properties) beyond the auto-generated settings class `Common.Properties.Settings`. All other types are internal to the assembly (e.g., `AssemblyInfo` attributes are compile-time metadata, not runtime API surface).
|
||
|
|
|
||
|
|
#### `Common.Properties.Settings`
|
||
|
|
|
||
|
|
- **Type**: `internal sealed partial class Settings : ApplicationSettingsBase`
|
||
|
|
- **Access**: Public static property `Settings.Default` (read-only)
|
||
|
|
- **Behavior**: Provides application-scoped configuration values for registry paths and display names used during MSI operations.
|
||
|
|
|
||
|
|
##### Public Properties (read-only, application-scoped):
|
||
|
|
|
||
|
|
| Property Name | Type | Default Value | Description |
|
||
|
|
|---------------|------|---------------|-------------|
|
||
|
|
| `RegistrySoftwareInstalledProducts` | `string` | `"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Products"` | Registry path where MSI stores installed product data (per-user SID `S-1-5-18` = LocalSystem context). |
|
||
|
|
| `RegistryInstallProperties` | `string` | `"InstallProperties"` | Subkey name under a product path where install metadata resides. |
|
||
|
|
| `RegistryDisplayName` | `string` | `"DisplayName"` | Registry value name for the user-facing product name. |
|
||
|
|
| `RegistryDataPRO` | `string` | `"DataPRO"` | Subkey name used to identify DataPRO-specific registry entries (e.g., under `InstallProperties`). |
|
||
|
|
| `RegistryDisplayVersion` | `string` | `"DisplayVersion"` | Registry value name for the installed version string. |
|
||
|
|
| `RegistrySoftwareInstalledComponents` | `string` | `"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Installer\\UserData\\S-1-5-18\\Components"` | Registry path where MSI stores component-to-product mapping. |
|
||
|
|
| `RegistryDataPROExeConfig` | `string` | `"DataPRO.exe.config"` | Registry value name (likely under install location) referencing the app config file. |
|
||
|
|
| `RegistryInstallLocation` | `string` | `"InstallLocation"` | Registry value name for the installation directory path. |
|
||
|
|
| `DTSSuite` | `string` | `"DTS.Suite"` | Identifier for the DTS suite (possibly used for feature grouping or upgrade detection). |
|
||
|
|
|
||
|
|
> **Note**: All properties are `ApplicationScopedSettingAttribute`, meaning their values are fixed at compile time and cannot be modified at runtime.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. **Invariants**
|
||
|
|
|
||
|
|
- The registry paths use the **LocalSystem SID (`S-1-5-18`)** explicitly, implying these settings are intended for use in contexts where the installer runs with elevated (system) privileges (e.g., custom actions executing as `System`).
|
||
|
|
- Registry paths and value names are **hardcoded strings**—no dynamic resolution or runtime computation occurs.
|
||
|
|
- The `Settings.Default` instance is **thread-safe** (via `ApplicationSettingsBase.Synchronized`), but only for reading values; no write operations are supported (all settings are `ApplicationScoped`).
|
||
|
|
- The `RegistryDataPRO` value (`"DataPRO"`) is used as a *key* or *subkey name*, not a value—suggesting it may be part of a hierarchy like:
|
||
|
|
`...\Products\<ProductCode>\InstallProperties\DataPRO\...`
|
||
|
|
- Version information is **not exposed** via this module (assembly version is `1.0.0.0` but not used in logic).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. **Dependencies**
|
||
|
|
|
||
|
|
#### Dependencies *of* this module:
|
||
|
|
- `System.Configuration` (for `ApplicationSettingsBase`, `ApplicationScopedSettingAttribute`, etc.)
|
||
|
|
- `System.Runtime.CompilerServices`, `System.CodeDom.Compiler`, `System.Diagnostics` (for attributes only)
|
||
|
|
|
||
|
|
#### Dependencies *on* this module:
|
||
|
|
- **Inferred consumers**: Other modules in `DataPRO/Modules/InstallerCustomActions/` (e.g., custom action DLLs) that need to read MSI registry metadata.
|
||
|
|
Example usage pattern (not in source, but implied):
|
||
|
|
```csharp
|
||
|
|
string productsPath = Common.Properties.Settings.Default.RegistrySoftwareInstalledProducts;
|
||
|
|
```
|
||
|
|
- Likely used in conjunction with Windows Installer APIs (e.g., `MsiEnumProducts`, `MsiGetProductInfo`) or direct registry access (`Microsoft.Win32.Registry`).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 5. **Gotchas**
|
||
|
|
|
||
|
|
- **Hardcoded SID**: The use of `S-1-5-18` (LocalSystem) may break if installer logic runs under a different context (e.g., per-user install with non-elevated user). No fallback or SID resolution is present.
|
||
|
|
- **No versioning in settings**: The `AssemblyVersion` is `1.0.0.0` but the settings themselves are not versioned—changing a registry path here could silently break existing upgrade logic if not coordinated with installer versioning.
|
||
|
|
- **Auto-generated file warning**: `Settings.Designer.cs` explicitly warns that manual changes will be lost on regeneration (e.g., via Visual Studio designer). This implies the settings are managed in a `.settings` designer file (not visible here).
|
||
|
|
- **No null-safety**: Property getters return the raw registry value—no validation or defaulting is done. If a registry value is missing, callers must handle `null`.
|
||
|
|
- **Ambiguous `DTSSuite` usage**: The purpose of `"DTS.Suite"` is unclear from this module alone—it may be used as a feature ID, upgrade code prefix, or registry grouping key, but no evidence of its usage exists in the provided files.
|
||
|
|
|
||
|
|
> **None identified from source alone.** (Applied only if no issues found—here, several are inferred from structure and naming.)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**End of Documentation**
|