MSIX 대량 변환 스크립트
MSIX 도구 키트의 대량 변환 스크립트를 사용하여 Windows 앱을 MSIX 패키지 형식으로 변환하는 작업을 자동화할 수 있습니다. 앱 목록 및 해당 세부 정보는 entry.ps1 스크립트에 제공됩니다.
변환을 위한 컴퓨터 준비
MSIX 도구 키트의 대량 변환 스크립트를 실행하기 전에 애플리케이션을 MSIX 패키징 형식으로 변환하는 것을 자동화하려면 사용하려는 디바이스(가상 또는 원격)를 원격 통신을 허용하도록 구성하고 MSIX 패키징 도구를 설치해야 합니다.
용어 | 설명 |
---|---|
호스트 컴퓨터 | 대량 변환 스크립트를 실행하는 디바이스입니다. |
가상 머신 | 호스트 컴퓨터에서 호스트되는 Hyper-V에 존재하는 디바이스입니다. |
원격 머신 | 네트워크를 통해 액세스할 수 있는 물리적 또는 가상 머신입니다. |
호스트 컴퓨터
호스트 컴퓨터는 다음 요구 사항을 충족해야 합니다.
- MSIX 패키징 도구를 설치해야 합니다.
- Virtual Machines를 사용하는 경우 Hyper-V를 설치해야 합니다.
- 원격 머신을 사용하는 경우:
- 디바이스는 원격 컴퓨터와 동일한 도메인에 있습니다.
- PowerShell 원격 사용
# Enables PowerShell Remoting Enable-PSRemoting -force
- PowerShell 원격 사용
- 디바이스는 작업 그룹 또는 대체 도메인에 원격 컴퓨터로 존재합니다.
- PowerShell 원격 사용
- WinRM 신뢰할 수 있는 호스트는 원격 컴퓨터의 디바이스 이름 또는 IP 주소를 포함해야 합니다.
# Enables PowerShell Remoting Enable-PSRemoting -force Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteMachineName>,[<RemoteMachineName>,...]
- 디바이스는 원격 컴퓨터와 동일한 도메인에 있습니다.
원격 머신
원격 컴퓨터는 다음 요구 사항을 충족해야 합니다.
MSIX 패키징 도구를 설치해야 합니다.
디바이스가 호스트 컴퓨터와 동일한 도메인 내에 있는 경우:
- PowerShell 원격 사용
- WinRM을 사용하도록 설정해야 합니다.
- 클라이언트 방화벽을 통해 ICMPv4 허용
# Enables PowerShell Remoting Enable-PSRemoting -force New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True
디바이스가 호스트 컴퓨터로 작업 그룹 또는 대체 도메인 내에 있는 경우:
- PowerShell 원격 사용
- WinRM 신뢰할 수 있는 호스트는 호스트 컴퓨터의 디바이스 이름 또는 IP 주소를 포함해야 합니다.
- 클라이언트 방화벽을 통해 ICMPv4 허용
# Enables PowerShell Remoting Enable-PSRemoting -force New-NetFirewallRule -DisplayName “ICMPv4” -Direction Inbound -Action Allow -Protocol icmpv4 -Enabled True Set-Item WSMan:\localhost\Client\TrustedHosts -Value <HostMachineName>
가상 머신
모든 요구 사항을 충족하도록 미리 구성되어 있으므로 Hyper-V 빠른 만들기 "MSIX 패키징 도구 환경" 이미지를 사용하는 것이 좋습니다. 가상 머신은 호스트 컴퓨터에서 호스트되고 Microsoft Hyper-V 내에서 실행되어야 합니다.
Virtual Machine은 다음 요구 사항을 충족해야 합니다.
- MSIX 패키징 도구를 설치해야 합니다.
구문
entry.ps1
설명
애플리케이션을 MSIX 패키지 형식으로 대량 패키지하는 기능을 제공하는 PowerShell 스크립트 집합입니다. 이러한 스크립트는 각 애플리케이션을 패키지하는 데 사용되는 로컬 가상 머신 또는 원격 머신에 연결됩니다.
MSIX 애플리케이션 형식으로 패키지되는 앱은 entry.ps1 스크립트에 입력된 순서대로 변환됩니다. entry.ps1 스크립트에 나열된 원격 머신은 애플리케이션을 MSIX 형식으로 패키지하는 데 사용됩니다. 가상 머신을 여러 번 사용하여 다른 애플리케이션을 MSIX 애플리케이션 형식으로 패키지할 수 있습니다.
스크립트를 실행하기 전에 먼저 스크립트의 변수로 변환 conversionsParameters
할 앱을 추가해야 합니다. 변수에 여러 앱을 추가할 수 있습니다. 이 스크립트는 앱 및 원격/가상 머신을 활용하여 MSIX 패키징 도구(MsixPackagingTool.exe)의 요구 사항을 충족하기 위해 형식이 지정된 XML 파일을 만듭니다. XML 파일을 만든 후 run_job.ps1 스크립트는 대상 디바이스에서 MsixPackagingTool.exe 실행하여 앱을 변환하고 스크립트 실행 폴더에 있는 .\Out 폴더에 배치하는 새 PowerShell 프로세스에서 실행됩니다.
예시
PS C:\> entry.ps1
Ths 예제에서는 entry.ps1 스크립트를 실행합니다. 이 스크립트는 변수에 conversionsParameters
지정된 앱을 MSIX 패키지로 변환합니다. 앱은 virtualMachines 및 remoteMachines 변수에 표시된 가상 머신 또는 원격 머신을 사용하여 변환됩니다.
매개 변수
virtualMachines
virtualMachines
매개 변수는 MSIX 형식으로 앱을 패키징할 때 연결하고 액세스할 가상 머신의 이름과 자격 증명을 포함하는 배열입니다.
- 형식: 배열
- 필수: 아니요
$virtualMachines = @(
@{
Name = "MSIX Packaging Tool Environment"; # Name of the virtual machine as listed in the Hyper-V Management console
Credential = $credential # Credentials used to connect/login to the virtual machine.
}
)
지정된 가상 머신을 사용하여 앱을 MSIX 형식으로 패키지합니다. 이 가상 머신은 메시지가 표시될 때 입력한 자격 증명을 사용하여 연결됩니다(프롬프트는 script entry.ps1 실행 직후에 표시됨). 애플리케이션을 MSIX 패키징 형식으로 패키징하기 전에 스크립트는 Hyper-V VM의 스냅샷을 만든 다음 애플리케이션이 패키지된 후 이 스냅샷으로 복원됩니다.
remoteMachines
매개 변수는 remoteMachines
MSIX 형식으로 앱을 패키징할 때 연결하고 액세스할 원격 머신의 이름과 자격 증명을 포함하는 배열입니다. 지정된 원격 컴퓨터는 단일 애플리케이션을 패키지하는 데 사용되는 일회용 디바이스입니다.
원격 머신은 네트워크에서 액세스할 수 있고 검색할 수 있어야 합니다.
- 형식: 배열
- 필수: 아니요
$remoteMachines = @(
@{
ComputerName = "Computer.Domain.com"; # The fully qualified name of the remote machine.
Credential = $credential } # Credentials used to connect/login to the remote machine.
)
지정된 원격 머신을 사용하여 단일 앱을 MSIX 형식으로 패키지합니다. 이 원격 컴퓨터는 메시지가 표시될 때 입력한 자격 증명을 사용하여 연결됩니다(프롬프트는 script entry.ps1 실행 직후에 표시됨).
entry.ps1 스크립트를 실행하기 전에 디바이스의 정규화된 도메인 이름 또는 외부 연결 별칭을 확인할 수 있는지 확인합니다.
signingCertificate
signingCertificate
매개 변수는 패키지된 애플리케이션에 서명하는 데 사용할 코드 서명 인증서와 관련된 정보를 포함하는 배열입니다. 이 인증서에는 최소 SHA256의 암호화 수준이 있어야 합니다.
- 형식: 배열
- 필수: 아니요
$SigningCertificate = @{
Password = "Password";
Path = "C:\Temp\ContosoLab.pfx"
}
conversionsParameters
conversionsParameters
매개 변수는 MSIX 형식으로 변환하려는 앱에 대한 정보를 포함하는 배열입니다. 배열의 각 앱은 개별적으로 구문 분석되고 원격 머신 또는 가상 머신에서 MSIX 패키지 변환을 통해 실행됩니다. 앱은 스크립트에 표시되는 순서대로 변환됩니다. MSIX 형식으로의 변환이 실패하면 스크립트는 다른 원격 머신 또는 가상 머신에서 애플리케이션을 다시 변환하려고 시도하지 않습니다.
- 형식: 배열
- 필수: 예
$conversionsParameters = @(
## Use for MSI applications:
@{
InstallerPath = "C:\Path\To\YourInstaller.msi"; # Full path to the installation media (local or remote paths).
PackageName = "YourApp"; # Application Display Name - name visible in the start menu.
PackageDisplayName = "Your App"; # Application Name - Can not contain special characters.
PublisherName = "CN=YourCompany"; # Certificate Publisher information - must match signing certificate
PublisherDisplayName = "YourCompany"; # Application Publisher name
PackageVersion = "1.0.0.0" # MSIX Application version (must contain 4 octets).
},
## Use for EXE or other applications:
@{
InstallerPath = "Path\To\YourInstaller.exe"; # Full path to the installation media (local or remote paths).
PackageName = "YourApp"; # Application Display Name - name visible in the start menu.
PackageDisplayName = "Your App"; # Application Name - Can not contain special characters.
PublisherName = "CN=YourCompany"; # Certificate Publisher information - must match signing certificate
PublisherDisplayName = "YourCompany"; # Application Publisher name
PackageVersion = "1.0.0.0"; # MSIX Application version (must contain 4 octets).
InstallerArguments = "/SilentInstallerArguement" # Arguements required by the installer to provide a silent installation of the application.
},
## Creating the Packaged app and Template file in a specific folder path:
@{
InstallerPath = "Path\To\YourInstaller.exe"; # Full path to the installation media (local or remote paths).
PackageName = "YourApp"; # Application Display Name - name visible in the start menu.
PackageDisplayName = "Your App"; # Application Name - Can not contain special characters.
PublisherName = "CN=YourCompany"; # Certificate Publisher information - must match signing certificate
PublisherDisplayName = "YourCompany"; # Application Publisher name
PackageVersion = "1.0.0.0"; # MSIX Application version (must contain 4 octets).
InstallerArguments = "/SilentInstallerArguement"; # Arguements required by the installer to provide a silent installation of the application.
SavePackagePath = "Custom\folder\Path"; # Specifies a custom folder path where the MSIX app will be created.
SaveTemplatePath = "Custom\folder\Path" # Specifies a custom folder path where the MSIX Template XML will be created.
}
)
변수에 conversionsParameters
제공된 앱 정보는 필요한 모든 애플리케이션 세부 정보가 포함된 XML 파일을 생성하는 데 사용됩니다. XML 파일을 만든 후 스크립트는 패키지할 MSIX 패키징 도구(MsixPackagingTool.exe)에 XML 파일을 전달합니다.
로깅
스크립트는 스크립트 실행 전체에서 발생한 작업을 간략하게 설명하는 로그 파일을 생성합니다. 로그 파일은 MSIX 패키징 형식으로 애플리케이션의 패키징과 관련된 세부 정보 및 스크립트 진행과 관련된 정보를 제공합니다. 로그는 모든 텍스트 유틸리티에서 읽을 수 있지만 Trace32 로그 판독기를 사용하여 읽기용으로 구성되었습니다. 스크립트 실행의 오류는 빨간색으로 강조 표시되고 경고는 노란색으로 강조 표시됩니다. 추적 32 로그 판독기에 대한 자세한 내용은 CMTrace를 방문하세요.
로그 파일은 스크립트의 디렉터리 .\logs\BulkConversion.log
내에서 만들어집니다.