1+ Function Get-PSMDWixConfig
2+ {
3+ [Cmdletbinding ()]
4+ Param (
5+ [Parameter (Mandatory = $false )]
6+ [string ]
7+ $Path = (Get-Location ).Path,
8+
9+ [Parameter (Mandatory = $false )]
10+ [switch ]
11+ $ProductShortName ,
12+
13+ [Parameter (Mandatory = $false )]
14+ [switch ]
15+ $ProductName ,
16+
17+ [Parameter (Mandatory = $false )]
18+ [switch ]
19+ $ProductVersion ,
20+
21+ [Parameter (Mandatory = $false )]
22+ [switch ]
23+ $Manufacturer ,
24+
25+ [Parameter (Mandatory = $false )]
26+ [switch ]
27+ $HelpLink ,
28+
29+ [Parameter (Mandatory = $false )]
30+ [switch ]
31+ $AboutLink ,
32+
33+ [Parameter (Mandatory = $false )]
34+ [switch ]
35+ $UpgradeCodeX86 ,
36+
37+ [Parameter (Mandatory = $false )]
38+ [switch ]
39+ $UpgradeCodeX64
40+ )
41+
42+ $file = Get-WixAbsolutePath ((Join-Path $Path ' .wix.json' ))
43+ $leaf = Split-Path $Path - Leaf
44+ $defaults = @ {
45+ ' ProductShortName' = $leaf ;
46+ ' ProductName' = $leaf ;
47+ ' ProductVersion' = ' 1.0.0' ;
48+ ' Manufacturer' = $leaf ;
49+ ' HelpLink' = " http://www.google.com/q=${leaf} " ;
50+ ' AboutLink' = " http://www.google.com/q=${leaf} " ;
51+ ' UpgradeCodeX86' = ([System.Guid ]::NewGuid().ToString().ToUpper());
52+ ' UpgradeCodeX64' = ([System.Guid ]::NewGuid().ToString().ToUpper())
53+ }
54+ $settings = New-Object - TypeName PSCustomObject
55+ $readSettings = New-Object - TypeName PSCustomObject
56+ $params = $PSBoundParameters.GetEnumerator () | Where-Object { ($_.Key -ne ' Path' ) }
57+
58+ # Make sure we have persistent upgrade codes
59+ if (Test-Path $file )
60+ {
61+ try
62+ {
63+ $readSettings = Get-Content - Raw $file | ConvertFrom-Json
64+ }
65+ catch { }
66+ }
67+ If (! $readSettings.UpgradeCodeX86 -or ! $readSettings.UpgradeCodeX64 )
68+ {
69+ If (! $readSettings.UpgradeCodeX86 )
70+ {
71+ Add-Member - InputObject $readSettings - MemberType NoteProperty - Name UpgradeCodeX86 - Value ([System.Guid ]::NewGuid().ToString().ToUpper())
72+ }
73+ If (! $readSettings.UpgradeCode64 )
74+ {
75+ Add-Member - InputObject $readSettings - MemberType NoteProperty - Name UpgradeCodeX64 - Value ([System.Guid ]::NewGuid().ToString().ToUpper())
76+ }
77+ # $readsettings
78+ $null = (New-Item - ItemType Directory - Force - Path (Split-Path $file ))
79+ $readSettings | ConvertTo-JSON | Out-File - Encoding utf8 $file
80+ }
81+
82+ if (Test-Path $file )
83+ {
84+ try
85+ {
86+ $readSettings = Get-Content - Raw $file | ConvertFrom-Json
87+ }
88+ catch { }
89+ }
90+ foreach ($parameter in $params )
91+ {
92+ $setting = $parameter.Key.ToLower ()
93+ $value = $parameter.Value
94+ if ($value )
95+ {
96+ if ($readSettings .$setting )
97+ {
98+ Add-Member - InputObject $settings - MemberType NoteProperty - Name $setting - Value $readSettings .$setting
99+ }
100+ elseif ($defaults .$setting )
101+ {
102+ Add-Member - InputObject $settings - MemberType NoteProperty - Name $setting - Value $defaults .$setting
103+ }
104+ else
105+ {
106+ Add-Member - InputObject $settings - MemberType NoteProperty - Name $setting - Value (Read-Host " $setting " )
107+ }
108+ }
109+ }
110+ if ($params.count -eq 0 )
111+ {
112+ foreach ($default in $defaults.GetEnumerator ())
113+ {
114+ $setting = $default.Name
115+ $value = $default.Value
116+ Add-Member - InputObject $settings - MemberType NoteProperty - Name $setting - Value $value - Force
117+ }
118+ $readSettings.PSObject.Properties | foreach-object {
119+ $setting = $_.Name
120+ $value = $_.Value
121+ Add-Member - InputObject $settings - MemberType NoteProperty - Name $setting - Value $value - Force
122+ }
123+ }
124+ Return $settings
125+ }
0 commit comments