diff --git a/bucket/7zip.json b/bucket/7zip.json index 105f68d6..0c6d0251 100644 --- a/bucket/7zip.json +++ b/bucket/7zip.json @@ -2,6 +2,17 @@ "homepage": "http://www.7-zip.org/", "license": "http://www.7-zip.org/license.txt", "version": "9.20", - "url": "http://downloads.sourceforge.net/sevenzip/7za920.zip", - "bin": "7za.exe" + "architecture": { + "64bit": { + "url": "http://downloads.sourceforge.net/project/sevenzip/7-Zip/9.20/7z920-x64.msi", + "hash": { "sha256": "62df458bc521001cd9a947643a84810ecbaa5a16b5c8e87d80df8e34c4a16fe2" }, + "msi": { "code": "{23170F69-40C1-2702-0920-000001000000}" } + }, + "32bit": { + "url": "http://downloads.sourceforge.net/project/sevenzip/7-Zip/9.20/7z920.msi", + "hash": { "sha256": "fe4807b4698ec89f82de7d85d32deaa4c772fc871537e31fb0fccf4473455cb8" }, + "msi": { "code": "{23170F69-40C1-2701-0920-000001000000}" } + } + }, + "bin": "7z.exe" } \ No newline at end of file diff --git a/lib/install.ps1 b/lib/install.ps1 index a0eb6817..9f7adb2c 100644 --- a/lib/install.ps1 +++ b/lib/install.ps1 @@ -137,7 +137,8 @@ function run_installer($fname, $manifest, $architecture, $dir) { } if(!($msi.code)) { abort "error in manifest: couldn't find MSI code"} $exe = 'msiexec' - $arg = @("/i `"$msifile`"", '/qb-!', "TARGETDIR=`"$dir`"") + $msi.args + $arg = @("/i `"$msifile`"", '/qb-!', "TARGETDIR=`"$dir`"", "INSTALLDIR=`"$dir`"") + + (@($msi.args) | ? { $_ }) } elseif($installer) { # other installer $rmfile = $exe = "$dir\$(coalesce $installer.exe "$fname")" if(!(is_in_dir $dir $exe)) { @@ -163,7 +164,7 @@ function run_uninstaller($manifest, $architecture, $dir) { if($msi) { $code = $msi.code - $exe = "msiexec"; $arg = @("/x $code", '/quiet'); + $exe = "msiexec"; $arg = @("/x $code", '/qb-!'); $continue_exit_codes.1605 = 'not installed, skipping' } elseif($uninstaller) { $exe = "$dir\$($uninstaller.exe)"