Загрузка и установка MSI из sharefile
Я пытаюсь собрать сценарий powershell для загрузки Firefox MSI из sharefile и установки без вывода сообщений.
Я наконец получил часть загрузки, чтобы работать. Однако установка не делает. Когда я перехожу к папкам, в которые я загружал Firefox MSI в (C:\, C:\users\public и мой рабочий стол), я получаю следующие ошибки:
Это приложение не может работать на вашем компьютере
Этот установочный пакет не может быть открыт. Обратитесь к поставщику приложения, чтобы убедиться, что это действительный пакет установщика Windows.
Я скачал exe с сайта Mozilla и MSI с фронта движения.
Доступ к программному обеспечению открыт для всех в сети.
Я получаю одинаковые ошибки как для exe, так и для msi.
Это мой текущий скрипт:
#Download and Run MSI package for Automated install
$uri = "https://sharefile.com/app/#/home/shared/foe0295b-0fbf-4ad9-ad73-fc18d26ba705/FirefoxInstaller.msi"
$out = "c:\FireFoxInstaller.msi"
Invoke-WebRequest -uri $uri -OutFile $out
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i $out /quiet /norestart /l c:\installlog.txt"
4 ответа
Чтобы загрузить последнюю версию Firefox, попробуйте следующее (заменив Outfile на ваше собственное допустимое местоположение);
Invoke-WebRequest -Uri "https://download.mozilla.org/?product=firefox-msi-latest-ssl&os=win64&lang=en-GB" -Outfile c:\temp\firefox.msi
Для установки использую;
start /wait msiexec /i C:\temp\Firefox.msi /quiet
Недавно у меня была похожая проблема, когда я хотел развернуть HipChat для всей компании. Основное различие заключается в том, что перед загрузкой я проверяю, установлено ли программное обеспечение, и пытаюсь установить его снова, оно очень просто и совместимо с Windows 7 и 10:
$file = 'HipChat-4.29.5.1662-win32.msi'
$link = "https://s3.amazonaws.com/hipchat-ops/hipchat4/windows/$file"
$soft_name = 'Hipchat'
$find = Get-WmiObject -Class Win32_Product -Filter "Name = `'$soft_name`'"
if ($find -eq $null) {
$tmp = "$env:TEMP\$file"
$client = New-Object System.Net.WebClient
$client.DownloadFile($link, $tmp)
msiexec /i $tmp /qn
del $tmp
echo "Tried installing $soft_name"
} else {
echo "ERROR: $soft_name is already installed."
echo $find
exit 1
}
exit 0
Как вы сказали, у вас есть MSI по вашему выбору, но я оправданно использовал MSI от Frontmotion
Это сработало, когда я это сделал, но дайте мне знать, сработало ли это для вас.
#Download and Run MSI package for Automated install
$uri = "http://hicap.frontmotion.com.s3.amazonaws.com/Firefox/Firefox-53.0.3/Firefox-53.0.3-en-US.msi"
$out = "c:\FireFoxInstaller.msi"
Function Download_MSI_FireFox_Installer{
Invoke-WebRequest -uri $uri -OutFile $out
$msifile = Get-ChildItem -Path $out -File -Filter '*.ms*'
write-host "FireFox MSI $msifile "
}
Function Install_FireFox{
$FileExists = Test-Path $msifile -IsValid
$DataStamp = get-date -Format yyyyMMddTHHmmss
$logFile = '{0}-{1}.log' -f $msifile.fullname,$DataStamp
$MSIArguments = @(
"/i"
('"{0}"' -f $msifile.fullname)
"/qn"
"/norestart"
"/L*v"
$logFile
)
If ($FileExists -eq $True)
{
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -passthru | wait-process
write-host "Finished msi "$msifile
}
Else {Write-Host "File doesn't exists"}
}
Download_MSI_FireFox_Installer
Install_FireFox
Я думаю, что назначение $msifile необходимо переместить за пределы функции Download_MSI_FireFox_Installer, иначе я получаю сообщение об ошибке, что путь в функции InstallFireFox равен нулю.