Установите пакет (appxbundle) через.appinstaller для всех пользователей на компьютере.

Я использую установку своего приложения UWP через файл.appinstaller: Подробнее об этом подходе

Но теперь установка работает только для текущего пользователя. Могу ли я как-нибудь установить приложение, которое выбрасывает.appinstaller всем пользователям на компьютере?

Редактировать:

У вас нет этого пакета в ваших руках. Он расположен на сервере, и все, что у вас есть, это URI для запуска файла appinstaller.

Заранее спасибо.

2 ответа

Вы не можете сделать это из пакета, установленного вручную (двойной щелчок) пользователем.

Общесистемные развертывания доступны только в том случае, если вы используете инструменты Microsoft DISM. Больше деталей:

Пять лет спустя ChatGPT создал для меня следующий сценарий PowerShell, который принимает в качестве параметра путь к AppInstaller и устанавливает его для всех пользователей:

      # Define the path to the AppInstaller XML File
param([String]$xmlFilePath)

# Define the directory for downloads
$downloadDirectory = "C:\AppInstallerTemp"
cmd.exe /c mkdir $downloadDirectory

# Supresses slow powershell GUI
$ProgressPreference = 'SilentlyContinue'

# Load the XML file
$xml = [xml](Get-Content $xmlFilePath)

# Get the Uri for the MainBundle
$mainBundleUri = $xml.AppInstaller.MainBundle.Uri

# Define the XML namespace
$namespaceStr = $xml.AppInstaller.xmlns
$namespace = New-Object Xml.XmlNamespaceManager($xml.NameTable)
$namespace.AddNamespace("ns", $namespaceStr)

# Download the MainBundle
$mainBundleFileName = "MainBundle.msixbundle"
$mainBundlePath = "$downloadDirectory\$mainBundleFileName"
Invoke-WebRequest -Uri $mainBundleUri -OutFile $mainBundlePath

# Get the Uri for dependencies with ProcessorArchitecture="x64"
$dependencies = $xml.SelectNodes("//ns:Dependencies/ns:Package[@ProcessorArchitecture='x64']", $namespace)

# Download and get the dependency paths for installation
$dependencyPaths = @()
foreach ($dependency in $dependencies) {
    $dependencyUri = $dependency.Uri
    $dependencyFileName = ($dependencyUri -split '/')[-1]
    $dependencyPath = "$downloadDirectory\$dependencyFileName"
    Invoke-WebRequest -Uri $dependencyUri -OutFile $dependencyPath
    $dependencyPaths += $dependencyPath
}

# Install the MainBundle and add dependencies to the dependency path list
Add-AppxProvisionedPackage -Online -PackagePath $mainBundlePath -DependencyPackagePath $dependencyPaths -SkipLicense

# Cleans up temp files
cmd.exe /c rd /s /q $downloadDirectory

# Forces install for other users
Get-AppXPackage -allusers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

Write-Host "Installation completed."
Другие вопросы по тегам