Дополнительная загрузка appx через Intune как MSI

В нашей среде у нас есть компьютеры, присоединенные к домену Windows 8.1 Enterprise, которые обычно никогда не находятся в сети компании. Мы используем Microsoft Intune для удаленного управления ноутбуками. Мы также используем Intune для загрузки новых программ на ноутбуки. Это отлично работает, когда программы могут быть установлены с помощью установщика MSI.

Однако мы создали собственное приложение для Windows 8.1, которое создает пакет APPX. Распространение / развертывание пакета APPX в качестве неопубликованного приложения оказалось чрезвычайно сложной задачей. Фактически, согласно отзывам команды Intune ( здесь ), это фактически НЕ возможно ...

0
задан 28 November 2015 в 15:23
1 ответ

В качестве обходного пути мы работали над решением, вдохновленным этим блогом , чтобы загрузить пакет appx неопубликованно с помощью установщика MSI с использованием набора инструментов WIX .

Мы хотим поделиться кодом WIX для создания установщика MSI. Этот установщик MSI можно использовать для развертывания приложения на желаемом целевом компьютере, например, с помощью Intune.

MSI сначала скопирует приложение и зависимости в подпапку ProgramFilesFolder, а затем выполнит Dism.exe / online / Add-ProvisionedAppxPackage. команда для загрузки приложения. Примечание: целевая машина должна иметь возможность загружать неопубликованные приложения (это хорошая отправная точка для получения дополнительных сведений ).

Код может быть дополнительно улучшен для обработки зависимостей x64 и очистки приложения во время удаления. .

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:&quot;$(var.AppxPackageName)&quot; /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>
0
ответ дан 5 December 2019 в 11:33

Теги

Похожие вопросы