Files
2026-04-17 14:55:32 -04:00

6.2 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/Modules/InstallerCustomActions/Common/Properties/AssemblyInfo.cs
DataPRO/Modules/InstallerCustomActions/Common/Properties/Settings.Designer.cs
2026-04-16T04:44:41.257169+00:00 Qwen/Qwen3-Coder-Next-FP8 1 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):
    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