高级安装程序使用命令行创建注册表
Advance installer create registry using command line
我已经通过以下link http://www.advancedinstaller.com/user-guide/new-reg.html 使用命令行创建注册表
$InstallerName = "Installer1.2.10"
$registryParams ="/edit $aippath /NewReg -RegKey HKLM\Software\MYApplication\Database\*"
$SourceDir = "D:\AdvanceInstaller"
$AdvanceInstallerPath = Get-ChildItem "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | ForEach-Object {Get-ItemProperty $_.PSPath} | Where-Object {$_.DisplayName -match "Advanced Installer"}
$InstallerPath= "$($AdvanceInstallerPath.InstallLocation)bin\x86\AdvancedInstaller.com"
$aippath = "$SourceDir$($InstallerName).aip"
$ProductName = "MYApplication"
$DeleteReg = "/edit $aippath /DelReg -RegKey HKLM\SOFTWARE\WOW6432Node\MyApplication"
$ProductParams = "/edit $aippath /SetProperty ProductName=$ProductName"
$repository = "/edit $aippath /SetAppdir -buildname DefaultBuild -path C:\MyApplication"
$newParameters = "/newproject $aippath -type enterprise"
$buildParams = "/build $aippath"
Start-Process -FilePath $InstallerPath -ArgumentList $newParameters -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $ProductParams -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $repository -Wait -WindowStyle Hidden -ErrorAction Stop
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.FileName = "$InstallerPath"
$pinfo.RedirectStandardError = $true
$pinfo.RedirectStandardOutput = $true
$pinfo.UseShellExecute = $false
$pinfo.Arguments = "$DeleteReg"
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$p.WaitForExit()
$stdout = $p.StandardOutput.ReadToEnd()
$stderr = $p.StandardError.ReadToEnd()
Write-Host $stdout
Write-Host $stderr
Start-Process -FilePath $InstallerPath -ArgumentList $buildParams -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $registryParams -Wait -WindowStyle Hidden -ErrorAction Stop
但是我无法看到安装后创建的所需注册表。安装软件后我需要的是如下
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MySoftware]
"Path"="C:\MySoftware"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MySoftware\Database]
"connectionstring"="server=.;initial db=master"
此外,在安装 msi
时,默认注册表被创建为 My Company\Project
,我不想要
经过大量的反复试验,这里是最终代码
$InstallerName = "Installer1.2.10"
$SourceDir = "D:\AdvanceInstaller"
$AdvanceInstallerPath = Get-ChildItem "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | ForEach-Object {Get-ItemProperty $_.PSPath} | Where-Object {$_.DisplayName -match "Advanced Installer"}
$InstallerPath= "$($AdvanceInstallerPath.InstallLocation)bin\x86\AdvancedInstaller.com"
$aippath = "$SourceDir$($InstallerName).aip"
$ProductName = "MyApplication"
$DeleteReg = "/edit $aippath /DelReg -regkey HKUD\Software\[Manufacturer]"
Start-Process -FilePath $InstallerPath -ArgumentList $DeleteReg -Wait -WindowStyle Hidden -ErrorAction Stop
$registryParams = "/edit $aippath /NewReg -RegKey HKUD\Software\MyApplication -data ''"
$registryParams1 = "/edit $aippath /NewReg -RegValue HKUD\Software\MyApplication\path -data C:\MyApplication"
Start-Process -FilePath $InstallerPath -ArgumentList $registryParams -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $registryParams1 -Wait -WindowStyle Hidden -ErrorAction Stop
我已经通过以下link http://www.advancedinstaller.com/user-guide/new-reg.html 使用命令行创建注册表
$InstallerName = "Installer1.2.10"
$registryParams ="/edit $aippath /NewReg -RegKey HKLM\Software\MYApplication\Database\*"
$SourceDir = "D:\AdvanceInstaller"
$AdvanceInstallerPath = Get-ChildItem "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | ForEach-Object {Get-ItemProperty $_.PSPath} | Where-Object {$_.DisplayName -match "Advanced Installer"}
$InstallerPath= "$($AdvanceInstallerPath.InstallLocation)bin\x86\AdvancedInstaller.com"
$aippath = "$SourceDir$($InstallerName).aip"
$ProductName = "MYApplication"
$DeleteReg = "/edit $aippath /DelReg -RegKey HKLM\SOFTWARE\WOW6432Node\MyApplication"
$ProductParams = "/edit $aippath /SetProperty ProductName=$ProductName"
$repository = "/edit $aippath /SetAppdir -buildname DefaultBuild -path C:\MyApplication"
$newParameters = "/newproject $aippath -type enterprise"
$buildParams = "/build $aippath"
Start-Process -FilePath $InstallerPath -ArgumentList $newParameters -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $ProductParams -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $repository -Wait -WindowStyle Hidden -ErrorAction Stop
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.FileName = "$InstallerPath"
$pinfo.RedirectStandardError = $true
$pinfo.RedirectStandardOutput = $true
$pinfo.UseShellExecute = $false
$pinfo.Arguments = "$DeleteReg"
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$p.WaitForExit()
$stdout = $p.StandardOutput.ReadToEnd()
$stderr = $p.StandardError.ReadToEnd()
Write-Host $stdout
Write-Host $stderr
Start-Process -FilePath $InstallerPath -ArgumentList $buildParams -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $registryParams -Wait -WindowStyle Hidden -ErrorAction Stop
但是我无法看到安装后创建的所需注册表。安装软件后我需要的是如下
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MySoftware] "Path"="C:\MySoftware"
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MySoftware\Database] "connectionstring"="server=.;initial db=master"
此外,在安装 msi
时,默认注册表被创建为 My Company\Project
,我不想要
经过大量的反复试验,这里是最终代码
$InstallerName = "Installer1.2.10"
$SourceDir = "D:\AdvanceInstaller"
$AdvanceInstallerPath = Get-ChildItem "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | ForEach-Object {Get-ItemProperty $_.PSPath} | Where-Object {$_.DisplayName -match "Advanced Installer"}
$InstallerPath= "$($AdvanceInstallerPath.InstallLocation)bin\x86\AdvancedInstaller.com"
$aippath = "$SourceDir$($InstallerName).aip"
$ProductName = "MyApplication"
$DeleteReg = "/edit $aippath /DelReg -regkey HKUD\Software\[Manufacturer]"
Start-Process -FilePath $InstallerPath -ArgumentList $DeleteReg -Wait -WindowStyle Hidden -ErrorAction Stop
$registryParams = "/edit $aippath /NewReg -RegKey HKUD\Software\MyApplication -data ''"
$registryParams1 = "/edit $aippath /NewReg -RegValue HKUD\Software\MyApplication\path -data C:\MyApplication"
Start-Process -FilePath $InstallerPath -ArgumentList $registryParams -Wait -WindowStyle Hidden -ErrorAction Stop
Start-Process -FilePath $InstallerPath -ArgumentList $registryParams1 -Wait -WindowStyle Hidden -ErrorAction Stop