Установите пакет (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."