명령줄 변환을 위한 템플릿 파일을 생성하는 방법
MSIX 패키징 도구를 사용하면 대화형 UI 또는 명령줄 옵션을 통해 두 가지 방법으로 변환을 수행할 수 있습니다. 명령줄을 사용하는 경우 변환이 특정 설정 및 요구 사항에 맞게 작동하도록 템플릿 파일을 제공해야 합니다. 이 문서는 적합한 템플릿 파일을 생성하는 프로세스를 안내하는 데 도움이 됩니다.
작동하는 템플릿 파일을 가져올 수 있는 두 가지 방법이 있습니다.
- MSIX 패키징 도구의 UI를 사용할 수 있습니다. 도구의 설정에서 만든 각 MSIX 패키지를 사용하여 변환 템플릿 파일을 생성하도록 지정할 수 있습니다.
- 샘플 템플릿을 사용하고 각 변환에 필요한 구성을 수동으로 입력할 수 있습니다.
MSIX 패키징 도구에서 변환 템플릿 파일 생성
- MSIX 패키징 도구를 시작합니다.
- 애플리케이션의 오른쪽 위 모서리에 있는 설정으로 이동합니다.
- '각 패키지를 사용하여 명령줄 파일 생성' 옵션이 선택되어 있는지 확인합니다.
- 필요한 설정을 변경하거나 수정합니다(예: 제외 항목, 종료 코드).
- 설정 저장
- 설치 관리자를 사용하여 애플리케이션 패키지 워크플로를 진행합니다.
- 설치 관리자를 선택하지 않으면 변환 템플릿 파일을 생성할 수 없습니다.
- exe를 사용하는 경우 변환 템플릿 파일을 생성하려면 설치 관리자에 자동 플래그를 전달해야 합니다.
- 변환이 끝나면 선택한 설치 관리자와 향후 변환에 다시 사용할 수 있는 현재 설정에 따라 템플릿 파일이 구성됩니다.
- 기본적으로 변환 템플릿 파일은 MSIX 패키지와 동일한 위치에 저장되지만 패키지 만들기 페이지에서 템플릿 파일에 대한 별도의 저장 위치를 지정할 수 있습니다.
- 각 변환이 끝날 때 출력하려는 MSIX에 따라 몇 가지 수정을 수행해야 합니다.
변환 템플릿 파일을 수동으로 편집
변환 템플릿 파일에 대한 템플릿 매개 변수를 수동으로 편집하여 적합한 템플릿 파일을 생성할 수 있습니다. 변환 템플릿 파일을 생성할 때는 템플릿 파일에 추가하는 기능에 주의해야 합니다. 일부는 작동하기 위해 추가 스키마 참조가 필요할 수 있습니다.
변환 템플릿 매개 변수 참조
변환 템플릿 파일에서 사용할 수 있는 매개 변수의 전체 목록입니다.
ConversionSettings | 설명 |
---|---|
설정:: AllowTelemetry | [선택 사항] 도구의 호출에 원격 분석 로깅을 사용합니다. |
설정:: ApplyAllPrepareComputerFixes | [선택 사항] 권장되는 모든 컴퓨터 준비 수정 사항을 적용합니다. 다른 특성이 사용된 경우에는 설정할 수 없습니다. |
설정:: GenerateCommandLineFile | [선택 사항] 나중에 사용할 수 있도록 SaveLocation 디렉터리에 템플릿 파일 입력을 복사합니다. |
설정:: AllowPromptForPassword | [선택 사항] 필요하지만 지정되어 있지 않은 경우 사용자에게 Virtual Machine 및 서명 인증서에 대한 암호 입력을 요청하도록 도구에 지시합니다. |
설정:: EnforceMicrosoftStoreVersioningRequirements | [선택 사항] Microsoft Store 및 비즈니스용 Microsoft Store 배포에 필요한 패키지 버전 관리 체계를 강제 적용하도록 도구에 지시합니다. |
설정:: ServerPortNumber | [선택 사항] 원격 컴퓨터에 연결할 때 사용됩니다. 템플릿 스키마의 v2가 필요합니다. |
설정:: AddPackageIntegrity | [선택 사항] 생성된 모든 MSIX에 패키지 무결성을 추가합니다. 템플릿 스키마의 v5가 필요합니다. |
ValidInstallerExitCodes | [선택 사항] 0개 이상의 ValidInstallerExitCode 요소입니다. 템플릿 스키마의 v2가 필요합니다. |
ValidInstallerExitCodes:: ValidInstallerExitCode | [선택 사항] 도구에 익숙하지 않거나 다시 부팅해야 하는 설치 관리자 종료 코드를 지정합니다. 템플릿 스키마의 v2가 필요합니다. |
ValidInstallerExitCodes:: ValidInstallerExitCode:: 다시 부팅 | [선택 사항] 변환 중에 종료 코드가 다시 부팅을 트리거할지 여부를 지정합니다. 템플릿 스키마의 v3가 필요합니다. |
ExclusionItems | [선택 사항] 0개 이상의 FileExclusion 또는 RegistryExclusion 요소입니다. 모든 FileExclusion 요소는 RegistryExclusion 요소 앞에 나타나야 합니다. |
ExclusionItems::FileExclusion | [선택 사항] 패키징에 제외할 파일입니다. |
ExclusionItems::FileExclusion::ExcludePath | 패키징에 제외할 파일의 경로입니다. |
ExclusionItems::RegistryExclusion | [선택 사항] 패키징에 제외할 레지스트리 키입니다. |
ExclusionItems::RegistryExclusion:: ExcludePath | 패키징에 제외할 레지스트리 경로입니다. |
PrepareComputer::DisableDefragService | [선택 사항] 앱이 변환되는 동안 Windows 조각 모음을 사용하지 않도록 설정합니다. False로 설정된 경우 ApplyAllPrepareComputerFixes를 재정의합니다. |
PrepareComputer:: DisableWindowsSearchService | [선택 사항] 앱이 변환되는 동안 Windows Search를 사용하지 않도록 설정합니다. False로 설정된 경우 ApplyAllPrepareComputerFixes를 재정의합니다. |
PrepareComputer:: DisableSmsHostService | [선택 사항] 앱이 변환되는 동안 SMS 호스트를 사용하지 않도록 설정합니다. False로 설정된 경우 ApplyAllPrepareComputerFixes를 재정의합니다. |
PrepareComputer:: DisableWindowsUpdateService | [선택 사항] 앱이 변환되는 동안 Windows Update를 사용하지 않도록 설정합니다. False로 설정된 경우 ApplyAllPrepareComputerFixes를 재정의합니다. |
SaveLocation | [선택 사항] 도구의 저장 위치를 지정할 요소입니다. 지정되어 있지 않은 경우 패키지는 데스크톱 폴더에 저장됩니다. |
SaveLocation::PackagePath | [선택 사항] 결과 MSIX 패키지가 저장되는 파일 또는 폴더의 경로입니다. |
SaveLocation::TemplatePath | [선택 사항] 결과 명령줄 템플릿이 저장되는 파일 또는 폴더의 경로입니다. |
Installer::Path | 애플리케이션 설치 관리자의 경로입니다. |
Installer::Arguments | [선택 사항] 설치 관리자에 전달할 인수입니다. 이 도구는 "/qn /norestart INSTALLSTARTMENUSHORTCUTS=1 DISABLEADVTSHORTCUTS=1" 인수를 사용하여 MSI 설치 관리자를 자동으로 실행합니다. 참고: .exe 설치 관리자를 사용하는 경우 설치 관리자가 자동으로 실행되도록 하려면 인수를 전달해야 합니다. |
Installer::InstallLocation | [선택 사항] 설치된 파일의 애플리케이션 루트 폴더에 대한 전체 경로입니다(예: "C:\Program Files (x86)\MyAppInstalllocation"). |
설치 관리자::IsUnattendedInstallWithoutArgument | [선택 사항] 앱에서 자동 인수 없이 '무인' 설치를 허용하는 경우 이 특성을 사용해야 합니다. 이 특성은 .exe 설치 관리자에만 사용됩니다. |
VirtualMachine | [선택 사항] 로컬 Virtual Machine에서 변환이 실행되도록 지정하는 요소입니다. |
VirtualMachine::Name | 변환 환경에 사용할 가상 머신의 이름입니다. |
VirtualMachine::Username | 변환 환경에 사용할 가상 머신의 사용자 이름입니다. |
RemoteMachine | [선택 사항] 변환이 원격 컴퓨터에서 실행되도록 지정하는 요소입니다. 템플릿 스키마의 v2가 필요합니다. |
RemoteMachine:: ComputerName | 변환 환경에 사용할 원격 머신의 이름입니다. 템플릿 스키마의 v2가 필요합니다. |
RemoteMachine:: 사용자 이름 | 변환 환경에 사용할 원격 머신의 사용자 이름입니다. 템플릿 스키마의 v2가 필요합니다. |
RemoteMachine:: EnableAutoLogon | [선택 사항] 이렇게 하면 변환이 원활하게 계속되도록 원격 컴퓨터에서 다시 시작해야 하는 변환을 수행할 때 자동으로 다시 로그인됩니다. 템플릿 스키마의 V3가 필요합니다. |
PackageInformation::PackageName | MSIX 패키지의 패키지 이름입니다. |
PackageInformation::PackageDisplayName | MSIX 패키지의 패키지 표시 이름입니다. |
PackageInformation::PublisherName | MSIX 패키지의 게시자입니다. |
PackageInformation::PublisherDisplayName | MSIX 패키지의 게시자 표시 이름입니다. |
PackageInformation::Version | MSIX 패키지의 버전 번호입니다. |
PackageInformation::P ackageDescription | [선택 사항] MSIX 패키지에 대한 설명입니다. 템플릿 스키마의 v4가 필요합니다. |
PackageInformation:: MainPackageNameForModificationPackage | [선택 사항] 주 패키지 이름의 패키지 ID 이름입니다. 주(부모) 애플리케이션에서 종속성을 갖는 수정 패키지를 만들 때 사용합니다. |
SigningInformation | [선택 사항] Device Guard 서명에 대한 서명 정보를 지정하는 요소입니다. 템플릿 스키마의 v4가 필요합니다. |
SigningInformation:: DeviceGuardSigning | [선택 사항] Device Guard 서명 정보를 지정하는 요소입니다. 템플릿 스키마의 v4가 필요합니다. |
DeviceGuardSigning:: TokenFile | JSON 형식으로 Device Guard 서명에 필요한 Azure AD 액세스 토큰입니다. v4 템플릿 스키마가 필요합니다. |
DeviceGuardSigning:: TimestampUrl | [선택 사항] Device Guard에 서명할 때 애플리케이션이 인증서의 수명을 초과하여 설치되도록 하는 타임스탬프를 제공합니다. 템플릿 스키마의 v4가 필요합니다. |
애플리케이션 | [선택 사항] MSIX 패키지에서 애플리케이션 항목을 구성할 0개 이상의 애플리케이션 요소입니다. |
Application::Id | MSIX 애플리케이션에 대한 앱 ID입니다. 이 ID는 지정된 ExecutableName과 일치하는 것으로 감지된 애플리케이션 항목에 사용됩니다. 패키지의 실행 파일에 대해 여러 개의 애플리케이션 ID 값이 있을 수 있습니다. 이 값은 패키지 내 애플리케이션의 고유한 식별자로서, PRAID(패키지 상대 앱 식별자)라고도 합니다. ID는 패키지 내에서 고유해야 하지만(같은 ID는 같은 패키지에서 한 번 이상 사용할 수 없습니다), 전역적으로 고유하지 않아도 됩니다. 같은 ID를 사용하는 시스템에 다른 패키지가 있을 수 있습니다. 이 문자열에는 마침표로 구분된 영숫자 필드가 있습니다. 각 필드는 ASCII 알파벳 문자로 시작해야 합니다. 이러한 값을 필드 값으로 사용할 수 없습니다. "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8" 및 "LPT9"입니다. |
Application::DisplayName | MSIX 패키지의 앱 표시 이름입니다. 이 표시 이름은 지정된 ExecutableName과 일치하는 것으로 감지된 애플리케이션 항목에 사용됩니다. |
Application::ExecutableName | 패키지 매니페스트에 추가될 MSIX 애플리케이션의 실행 파일 이름입니다. 이 이름의 애플리케이션이 감지되지 않은 경우 해당 애플리케이션 항목은 무시됩니다. |
Application::Description | [선택 사항] MSIX 애플리케이션에 대한 앱 설명입니다. 사용되지 않은 경우 애플리케이션 DisplayName이 사용됩니다. 이 설명은 지정된 ExecutableName과 일치하는 것으로 감지된 애플리케이션 항목에 사용됩니다. |
기능 | [선택 사항] MSIX 패키지에 사용자 지정 기능을 추가할 0개 이상의 기능 요소입니다. "runFullTrust" 기능은 변환 중 기본값으로 추가됩니다. |
Capability::Name | MSIX 패키지에 추가할 기능입니다. |
샘플 변환 템플릿 파일
<MsixPackagingToolTemplate
xmlns="http://schemas.microsoft.com/appx/msixpackagingtool/template/2018"
xmlns:V2="http://schemas.microsoft.com/msix/msixpackagingtool/template/1904"
xmlns:V3="http://schemas.microsoft.com/msix/msixpackagingtool/template/1907"
xmlns:V4="http://schemas.microsoft.com/msix/msixpackagingtool/template/1910"
xmlns:V5="http://schemas.microsoft.com/msix/msixpackagingtool/template/2001">
<!--Note: You only need to include xmlns:v2 - xmlns:v5 if you are using one of the features that use those schemas -->
<Settings
AllowTelemetry="true"
ApplyAllPrepareComputerFixes="true"
GenerateCommandLineFile="true"
AllowPromptForPassword="false"
EnforceMicrosoftStoreVersioningRequirements="false"
v2:ServerPortNumber="1599"
v5:AddPackageIntegrity="true">
<!--Note: Exclusion items are optional and if declared take precedence over the default tool exclusion items
<ExclusionItems>
<FileExclusion ExcludePath="[{CryptoKeys}]" />
<FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Crypto" />
<FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Search\Data" />
<FileExclusion ExcludePath="[{Cookies}]" />
<FileExclusion ExcludePath="[{History}]" />
<FileExclusion ExcludePath="[{Cache}]" />
<FileExclusion ExcludePath="[{Personal}]" />
<FileExclusion ExcludePath="[{Profile}]\Local Settings" />
<FileExclusion ExcludePath="[{Profile}]\NTUSER.DAT.LOG1" />
<FileExclusion ExcludePath="[{Profile}]\ NTUSER.DAT.LOG2" />
<FileExclusion ExcludePath="[{Recent}]" />
<FileExclusion ExcludePath="[{Windows}]\debug" />
<FileExclusion ExcludePath="[{Windows}]\Logs\CBS" />
<FileExclusion ExcludePath="[{Windows}]\Temp" />
<FileExclusion ExcludePath="[{Windows}]\WinSxS\ManifestCache" />
<FileExclusion ExcludePath="[{Windows}]\WindowsUpdate.log" />
<FileExclusion ExcludePath="[{Windows}]\Installer" />
<FileExclusion ExcludePath="[{AppVPackageDrive}]\$Recycle.Bin " />
<FileExclusion ExcludePath="[{AppVPackageDrive}]\System Volume Information" />
<FileExclusion ExcludePath="[{AppVPackageDrive}]\Config.Msi" />
<FileExclusion ExcludePath="[{AppData}]\Microsoft\AppV" />
<FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Security Client" />
<FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Microsoft Antimalware" />
<FileExclusion ExcludePath="[{Common AppData}]\Microsoft\Windows Defender" />
<FileExclusion ExcludePath="[{ProgramFiles}]\Microsoft Security Client" />
<FileExclusion ExcludePath="[{ProgramFiles}]\Windows Defender" />
<FileExclusion ExcludePath="[{ProgramFiles}]\WindowsApps" />
<FileExclusion ExcludePath="[{Local AppData}]\Temp" />
<FileExclusion ExcludePath="[{Local AppData}]\Microsoft\Windows" />
<FileExclusion ExcludePath="[{Local AppData}]\Packages" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Cryptography" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware Setup" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\Microsoft Security Client" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Microsoft Antimalware" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" />
<RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
<RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU" />
<RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
<RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Streams" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Microsoft\AppV" />
<RegistryExclusion ExcludePath= "REGISTRY\MACHINE\SOFTWARE\Wow6432Node\Microsoft\AppV" />
<RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Microsoft\AppV" />
<RegistryExclusion ExcludePath= "REGISTRY\USER\[{AppVCurrentUserSID}]\Software\Wow6432Node\Microsoft\AppV" />
</ExclusionItems>
-->
<!--Note: Specifying an installer exit code will allow you to automatically trigger a reboot during your conversion
<v2:ValidInstallerExitCodes>
<V2:ValidInstallerExitCode ExitCode="3010" V3:Reboot="true"/>
<V2:ValidInstallerExitCode ExitCode="1641"/>
</v2:ValidInstallerExitCodes>
-->
</Settings>
<!--Note: this section takes precedence over the Settings::ApplyAllPrepareComputerFixes attribute and is optional
<PrepareComputer
DisableDefragService="true"
DisableWindowsSearchService="true"
DisableSmsHostService="true"
DisableWindowsUpdateService="true"/>
-->
<SaveLocation
PackagePath="C:\users\user\Desktop\MyPackage.msix"
TemplatePath="C:\users\user\Desktop\MyTemplate.xml" />
<Installer
Path="C:\MyAppInstaller.msi"
InstallLocation="C:\Program Files\MyAppInstallLocation" />
<!--NOTE: This section specifies that the conversion will be run on a local Virtual Machine. This is optional if you want to change your conversion environment from the default local machine.
<VirtualMachine Name="vmname" Username="vmusername"/>
-->
<!--NOTE: This section specifies that the conversion will be run on a remote machine.This is optional if you want to change your conversion environment from the default local machine.
<v2:RemoteMachine ComputerName="vmname" Username="vmusername" v3:EnableAutoLogon="true"/>
-->
<PackageInformation
PackageName="MyAppPackageName"
PackageDisplayName="MyApp Display Name"
PublisherName="CN=MyPublisher"
PublisherDisplayName="MyPublisher Display Name"
Version="1.1.0.0"
MainPackageNameForModificationPackage="MainPackageIdentityName">
<!--Note: This is optional, if you want to sign your package with Device Guard signing
<v4:SigningInformation>
<v4:DeviceGuardSigning
Tokenfile="tokenfile.json"
TimestampUrl="https://mytimestamp.com"/>
</v4:SigningInformation>
-->
<!--NOTE: This ID will be used if the Application entry detected matches the specified ExecutableName
<Applications>
<Application
Id="MyApp1"
Description="MyApp"
DisplayName="My App"
ExecutableName="MyApp.exe"/>
</Applications>
-->
<!--NOTE: This is optional as “runFullTrust” capability is added by default during conversion
<Capabilities>
<Capability Name="runFullTrust" />
</Capabilities>
-->
</PackageInformation>
</MsixPackagingToolTemplate>