Поделиться через


Создание файла установщика приложений вручную

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

Чтобы установить связанный набор как одну сущность, необходимо указать основной пакет и необязательный пакет как один. Для этого необходимо создать XML-файл с расширением APPInstaller для определения связанного набора. Установщик приложений использует файл *.appinstaller и позволяет пользователю устанавливать все определенные пакеты одним щелчком мыши.

Во время развертывания файл установщика приложений будет:

  • Пакет приложения Windows, на который ссылается атрибут URI элемента < MainPackage >, будет проверять Name, Publisher и Version атрибуты целевого пакета приложения Windows. Если элемент Package/Identity в манифесте пакета приложения Windows не совпадает, установка завершится ошибкой.
  • Создайте ссылку на URI обновления и восстановления для семейства пакетов.

Создание файла установщика приложений

Чтобы распространить связанный набор как одну сущность, необходимо создать файл установщика приложений, содержащий элементы, необходимые для этой схемы установщика приложений.

  1. Создайте файл *.AppInstaller.
  2. Укажите атрибуты файла установщика приложений.
  3. Укажите основной пакет приложения Для Windows.
  4. Укажите связанный необязательный пакет.
  5. Укажите пакет Framework приложения Windows, от которого зависит программа.
  6. Укажите пути URI обновления.
  7. Укажите пути URI восстановления.
  8. Укажите параметры обновления.
Пример файла установщика приложений

Выполнив описанные выше действия, вы успешно создали файл установщика приложений, который похож на следующий:

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <OptionalPackages>
        <Bundle
            Name="Contoso.OptionalApp1"
            Publisher="CN=Contoso"
            Version="2.23.12.43"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />

        <Bundle
            Name="Contoso.OptionalApp2"
            Publisher="CN=Contoso"
            Version="2.23.12.43"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp2.msixbundle" />

        <Package
            Name="Fabrikam.OptionalApp3"
            Publisher="CN=Fabrikam"
            Version="10.34.54.23"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix"
            ProcessorArchitecture="x64" />
    </OptionalPackages>

    <UpdateURIs>
        <UpdateURI>http://mywebservice.azurewebsites.net/appset.appinstaller</UpdateURI>
        <UpdateURI>http://mywebservice2.azurewebsites.net/appset.appinstaller</UpdateURI>
    </UpdateURIs>

    <RepairURIs>
        <RepairURI>http://mywebservice.azurewebsites.net/appset.appinstaller</RepairURI>
        <RepairURI>http://mywebservice2.azurewebsites.net/appset.appinstaller</RepairURI>
    </RepairURIs>

    <UpdateSettings>
        <OnLaunch HoursBetweenUpdateChecks="0"/>   
    </UpdateSettings>

</AppInstaller>

Шаг 1. Создание файла *.appinstaller

Используя текстовый редактор (Notepad.exe), создайте новый файл с расширением имени файла *. AppInstaller

Практическое руководство.
  1. Откройте меню "Пуск".
  2. Введите следующее: notepad.exe
  3. Откройте меню "Файл ".
  4. Выберите "Сохранить как" в раскрывающемся меню.

Шаг 2. Добавление базового шаблона

AppInstaller Включите элемент в файл установщика приложений, отметив версию, путь и сетевое расположение файла установщика приложений. Сведения в элементе AppInstaller будут использоваться при установке связанных приложений Windows.

Элемент Описание
xmlns Пространство имен XML
Версия Версия файла установщика приложений в формате с четырьмя точками (1.0.0.0).
URI-адрес Путь URI к текущему файлу установщика приложений, доступный устройством.
Практическое руководство.
  1. Откройте файл, созданный на шаге 1.

  2. Скопируйте следующее XML-содержимое в файл *.AppInstaller.

    <?xml version="1.0" encoding="utf-8"?>
    <AppInstaller
        xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
        Version=""
        Uri="" >
    </AppInstaller>
    
  3. Version Обновление атрибута с помощью версии файла установщика приложений

  4. Обновите атрибут URI сетевого расположения, откуда этот файл *.AppInstaller будет доступен.

Шаг 3. Добавление сведений о основном пакете

<MainPackage> и <MainBundle> используются для идентификации основного приложения Windows, которое будет установлено с помощью файла программы установки приложений. Когда установщик приложений для Windows является *<MainPackage> или *.appx, используется . <MainBundle> Используйте, когда установщик приложений Windows является пакетным установщиком приложений Windows, с расширением *.msixbundle или *.appxbundle.

Элемент Описание
Имя Имя основного приложения, которое распространяется через файл установщика приложений. Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Name
Издатель Каноническое имя сертификата издателя, используемого для подписи основного установщика приложений Windows. Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Publisher
Версия Версия основного установщика приложений Windows в четырехточечной нотации (1.0.0.0). Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Version
Архитектура процессора Архитектура, в которую устанавливается основной установщик приложений Windows.
УРИ Путь URI к основному носителю установки приложения Windows.

Сведения в атрибуте <MainBundle> или <MainPackage> должны соответствовать элементу Package/Identity в манифесте пакета приложения или манифесте бандла приложения соответственно.

Установщик приложений Windows

Если основной пакет приложения — это .msix или .appx файл, используйте <MainPackage>, как показано ниже. Не забудьте включить ProcessorArchitecture, так как это обязательно для пакетов, не являющихся пакетами-комплектами.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainPackage
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        ProcessorArchitecture="x64"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msix" />

</AppInstaller>
Установщик пакета приложений Windows

Если основной пакет приложения — это файл .msixbundle или .appxbundle, используйте <MainBundle> вместо <MainPackage>, как показано ниже. Для пакетов ProcessorArchitecture не требуется.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

</AppInstaller>

Шаг 4. Добавление необязательных пакетов

Аналогично атрибуту основного пакета приложения, если необязательный пакет может быть пакетом приложения или пакетом приложений, дочерний элемент в <OptionalPackages> атрибуте должен быть <Package> или <Bundle> соответственно. Сведения о пакете в дочерних элементах должны соответствовать элементу идентичности в манифесте бандла или пакета.

Элемент Описание
Имя Имя необязательного приложения, распространяемого через файл установщика приложений. Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Name
Издатель Каноническое имя сертификата издателя, используемого для подписи необязательного установщика приложений Windows. Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Publisher
Версия Версия необязательного установщика приложений Windows в формате с четырьмя точками (1.0.0.0). Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Version
Архитектура процессора Архитектура, в которую устанавливается необязательный установщик приложений Windows.
УРИ Путь URI к основному носителю установки приложения Windows.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <OptionalPackages>
        <Bundle
            Name="Contoso.OptionalApp1"
            Publisher="CN=Contoso"
            Version="2.23.12.43"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp1.msixbundle" />

        <Package
            Name="Fabrikam.OptionalApp3"
            Publisher="CN=Fabrikam"
            Version="10.34.54.23"
            ProcessorArchitecture="x64"
            Uri="http://mywebservice.azurewebsites.net/OptionalApp3.msix" />

    </OptionalPackages>

</AppInstaller>

Шаг 5. Добавление зависимостей

В элементе зависимостей можно указать необходимые пакеты платформы для основного пакета или необязательных пакетов.

Элемент Описание
Имя Имя приложения зависимостей, распространяемого через файл установщика приложений. Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Name
Издатель Каноническое имя сертификата издателя, используемого для подписи установщика приложений Windows зависимостей. Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Publisher
Версия Версия установщика приложения Windows в формате с четырьмя точками (1.0.0.0). Это можно найти, выполнив следующий командлет PowerShell: $(Get-AppxPackage [AppName]).Version
Архитектура процессора Архитектура, на которую устанавливается установщик приложений Windows зависимостей.
УРИ Путь URI к установочному носителю зависимого приложения Windows.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <Dependencies>
        <Package 
            Name="Microsoft.VCLibs.140.00" 
            Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" 
            Version="14.0.24605.0" ProcessorArchitecture="x86" Uri="http://foobarbaz.com/fwkx86.appx" />
        <Package 
            Name="Microsoft.VCLibs.140.00" 
            Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" 
            Version="14.0.24605.0" 
            ProcessorArchitecture="x64" 
            Uri="http://foobarbaz.com/fwkx64.appx" />
    </Dependencies>

</AppInstaller>

Шаг 6. Добавление параметра обновления

Файл установщика приложений также может указать параметр обновления, чтобы связанные наборы можно было автоматически обновлять при публикации нового файла установщика приложений. <UpdateSettings> — это необязательный элемент. В <UpdateSettings> параметр OnLaunch указывает, что проверки обновлений должны выполняться при запуске приложения, и HoursBetweenUpdateChecks="12" указывает, что проверка обновления должна выполняться каждые 12 часов. Если HoursBetweenUpdateChecks не указан, интервал по умолчанию, используемый для проверки обновлений, составляет 24 часа. Дополнительные типы обновлений, например фоновые обновления, можно найти в схеме параметров обновления; Дополнительные типы обновлений при запуске, например обновления с запросом, можно найти в схеме OnLaunch.

Элементы Описание
ЧасыДоСледующейПроверкиОбновлений Определяет минимальный разрыв в проверках обновления приложений Windows.
ОбновлениеАктивацииБлоков Определяет процесс проверки обновления приложения.
ShowPrompt Определяет, отображается ли окно при установке обновлений и при проверке обновлений.
ОбновитьПринудительноИзЛюбойВерсии Указывает, что следующая версия приложения может быть более новой или более старой. Если True, будут установлены все версии для обоих, если False (по умолчанию), будут установлены только новые версии.
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <UpdateSettings>
        <OnLaunch 
            HoursBetweenUpdateChecks="12"
            UpdateBlocksActivation="true"
            ShowPrompt="true" />
        <AutomaticBackgroundTask />
        <ForceUpdateFromAnyVersion>true</ForceUpdateFromAnyVersion>
    </UpdateSettings>

</AppInstaller>

Шаг 7. Добавление параметров автоматического обновления

Это важно

Следующие параметры доступны только при использовании схемы 2021 в сборке для участников программы Windows Insider на Windows 10.

Приложения Windows, установленные с файлом установщика приложений, по умолчанию будут обновлять приложение Windows из URI установщика приложений, придерживаясь конфигураций, заданных на предыдущем шаге. URI обновления, настроенные на этом шаге, будут использоваться в качестве резервных URI, которые можно использовать, если исходный URI установщика приложений больше недоступен. Для любого приложения Windows можно настроить не более 10 URI обновления.

URI обновления должны указывать на файлы Установщика приложений.

Замечание

Эти параметры работают только в том случае, если схема настроена как 2021 или более поздней.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <UpdateSettings>
        <OnLaunch 
            HoursBetweenUpdateChecks="12" />
    </UpdateSettings>

    <UpdateUris>
        <UpdateUri>https://www.contoso.com/Installers/MainApp.AppInstaller</UpdateUri>
        <UpdateUri>\\ServerName\Share\Installers\MainApp.AppInstaller</UpdateUri>
    </UpdateUris>

</AppInstaller>

Шаг 8. Добавление параметров автоматического восстановления

Это важно

Следующие параметры доступны только при использовании схемы 2021 в сборке для участников программы Windows Insider на Windows 10.

Приложения Windows, установленные на устройстве, могут поддерживать автоматическое восстановление приложения Windows, когда оно было изменено. Исходный установщик, который будет использоваться для восстановления приложения Windows, можно настроить с помощью <RepairURIs> свойства. Приложение Windows попытается восстановить себя на основе URI установщика приложений, если недоступно, приложение Windows будет использовать URI восстановления для идентификации источника восстановления. Для любого приложения Windows можно настроить не более 10 URI восстановления.

Универсальные коды ресурсов (URI) для восстановления могут быть предназначены для Windows-приложений или для файлов установщика приложений. Этот параметр не требует установки приложения Windows с помощью файла установщика приложений.

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2021"
    Version="1.0.0.0"
    Uri="http://mywebservice.azurewebsites.net/appset.appinstaller" >

    <MainBundle
        Name="Contoso.MainApp"
        Publisher="CN=Contoso"
        Version="2.23.12.43"
        Uri="http://mywebservice.azurewebsites.net/mainapp.msixbundle" />

    <UpdateSettings>
        <OnLaunch 
            HoursBetweenUpdateChecks="12" />
    </UpdateSettings>

    <RepairUris>
        <RepairUri></RepairUri>
        <RepairUri></RepairUri>
    </RepairUris>

</AppInstaller>

Все сведения о схеме XML см. в справочнике по файлу установщика приложений.

Замечание

Тип файла установщика приложений является новым в Windows 10 версии 1709 (Windows 10 Fall Creators Update). Не поддерживается развертывание приложений Windows 10 с помощью файла установщика приложений в предыдущих версиях Windows 10. Элемент HoursBetweenUpdateChecks доступен начиная с Windows 10 версии 1803.