Загружать пакеты appx через Intune как MSI
В нашей среде у нас есть присоединенные к домену компьютеры под управлением Windows 8.1, которые обычно никогда не подключены к сети компании. Мы используем Microsoft Intune для удаленного управления ноутбуками. Мы также используем Intune для загрузки новых программ на ноутбуки. Это прекрасно работает, когда программы могут быть установлены через установщик MSI.
Однако мы создали собственное приложение для Windows 8.1, которое создает пакет APPX. Выдвижение / развертывание пакета APPX в качестве приложения с дополнительной загрузкой оказалось чрезвычайно трудным. На самом деле, согласно отзывам команды Intune ( здесь), это на самом деле НЕ возможно сделать...
1 ответ
В качестве обходного пути мы работаем над решением, вдохновленным этим блогом, для загрузки пакета appx с помощью установщика MSI с использованием набора инструментов WIX.
Мы хотим поделиться кодом WIX для генерации установщика MSI. Этот установщик MSI можно использовать для развертывания приложения на желаемой целевой машине, например, с использованием Intune.
MSI сначала скопирует appx и зависимости в подпапку ProgramFilesFolder, а затем выполнит команду dism.exe /online /Add-ProvisionedAppxPackage, чтобы загрузить приложение. Примечание: целевая машина должна иметь возможность загружать приложения (это хорошая отправная точка для более подробной информации).
Код может быть улучшен для обработки зависимостей x64 и очистки appx во время удаления.
WIX XML
<?xml version="1.0" encoding="UTF-8"?>
<!-- Versioning -->
<?define InstallerProductVersion = "1.0.0.0" ?>
<!-- Product info -->
<?define AppxPackageName = "YOURAPPNAME.appx" ?>
<?define ProductName = "Title of the app" ?>
<?define ProductManufacturer = "YOUR COMPANY NAME" ?>
<?define UpdateCode = "A GUID" ?> <!-- keep this for version updates -->
<!-- Install settings-->
<?define InstallFolderName = "Folder for installation files" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="$(var.InstallerProductVersion)"
Manufacturer="$(var.ProductManufacturer)" ="$(var.UpdateCode)">
<Package InstallerVersion="500" Compressed="yes" Comments="your comment" Manufacturer="$(var.ProductManufacturer)"
Description="Installer for $(var.ProductName)" Languages="1033" SummaryCodepage="1252" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<!-- the icon -->
<Icon Id="icon.ico" SourceFile=".\yourIco.ico"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico" />
<Property Id='ARPCONTACT'>info@yourcompany.com</Property>
<Property Id='ARPHELPLINK'>www.yourcompany.com</Property>
<!-- the media -->
<MediaTemplate EmbedCab="yes" />
<Feature Id="ProductFeature" Title="SideloadWithWiXSetup" Level="1">
<ComponentGroupRef Id="ComponentGroup.App" />
<ComponentGroupRef Id="ComponentGroup.Dependencies" />
</Feature>
<UIRef Id="WixUI_Minimal" />
<WixVariable Id="WixUILicenseRtf" Value="end user licence agreement.rtf" />
<CustomAction Id="DISMInstallAppx" Directory="INSTALLFOLDER" Execute="commit" Impersonate="no" ExeCommand="dism.exe /online /Add-ProvisionedAppxPackage /PackagePath:"$(var.AppxPackageName)" /SkipLicense" Return="check" />
<InstallExecuteSequence>
<Custom Action="DISMInstallAppx" After="InstallFiles" >(NOT Installed) OR WIX_UPGRADE_DETECTED OR REPAIR</Custom>
</InstallExecuteSequence>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="$(var.InstallFolderName)">
<Directory Id="DEPENDENCIES" Name="Dependencies">
<Directory Id="DEPENDENCIESx86" Name="x86" />
</Directory>
</Directory>
</Directory>
</Directory>
</Fragment>
<Fragment>
<!-- ComponentGroup.App -->
<ComponentGroup Id="ComponentGroup.App" Directory="INSTALLFOLDER">
<!-- Program components -->
<Component Id="Component.AppxPackage" >
<File Id="File.AppxPackage" Source="$(var.AppxPackageName)" KeyPath="yes" Checksum="yes" />
</Component>
</ComponentGroup>
<ComponentGroup Id="ComponentGroup.Dependencies" Directory="DEPENDENCIESx86">
<Component Id="Dependencies.VCLib">
<File Id="File.VCLib" Source="Dependencies\x86\Microsoft.VCLibs.x86.12.00.appx" KeyPath="yes" Checksum="yes" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>