0

我正在尝试整理一个 powershell 脚本来从 sharefile 下载 firefox msi 并静默安装。

我终于得到了下载部分的工作。但是,安装不会。当我导航到我将 firefox msi 下载到的文件夹(C:\、C:\users\public 和我的桌面)时,我收到以下错误:

此应用无法在您的 PC 上运行

无法打开此安装包。联系应用程序供应商以验证这是一个有效的 Windows 安装程序包。

我从 mozilla 网站下载了 exe,从 front motion 下载了 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

4 回答 4

3

要获取最新版本的 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
于 2019-05-22T10:34:30.657 回答
2

最近我有一个类似的问题,我想将 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
于 2017-06-15T14:55:14.143 回答
0

正如您所说,您可以选择 MSI,但我刚刚使用了Frontmotion的 MSI

当我这样做时,这很有效,但如果它对你有用,请告诉我。

#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
于 2017-06-02T21:20:32.693 回答
0

我认为 $msifile 分配需要移到 Download_MSI_FireFox_Installer 函数之外,否则,我会收到一个错误,即 InstallFireFox 函数中的路径为空。

于 2021-04-29T14:38:57.193 回答