UI/UI.xaml

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="IntuneWinAppUtil GUI - 1.0.8"
        SizeToContent="WidthAndHeight"
        ResizeMode="CanResize"
        MinWidth="700"
        MinHeight="420"
        WindowStartupLocation="CenterScreen"
        Background="#F4F7FB"
        FontFamily="Segoe UI"
        TextOptions.TextFormattingMode="Ideal"
        TextOptions.TextRenderingMode="ClearType">
 
    <Window.Resources>
        <SolidColorBrush x:Key="InkBrush" Color="#182230"/>
        <SolidColorBrush x:Key="MutedBrush" Color="#667085"/>
        <SolidColorBrush x:Key="LineBrush" Color="#D7DEE8"/>
        <SolidColorBrush x:Key="PanelBrush" Color="#FFFFFF"/>
        <SolidColorBrush x:Key="SoftPanelBrush" Color="#F8FAFC"/>
        <SolidColorBrush x:Key="AccentBrush" Color="#0B6BD3"/>
        <SolidColorBrush x:Key="AccentDarkBrush" Color="#084B93"/>
 
        <Style TargetType="Label">
            <Setter Property="Foreground" Value="{StaticResource InkBrush}"/>
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="FontWeight" Value="SemiBold"/>
            <Setter Property="Padding" Value="0"/>
            <Setter Property="Margin" Value="0,3,0,0"/>
            <Setter Property="VerticalAlignment" Value="Top"/>
        </Style>
 
        <Style TargetType="TextBox">
            <Setter Property="MinHeight" Value="31"/>
            <Setter Property="Padding" Value="8,5"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Background" Value="#FFFFFF"/>
            <Setter Property="BorderBrush" Value="#C9D4E5"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="Foreground" Value="{StaticResource InkBrush}"/>
            <Setter Property="FontSize" Value="12.5"/>
        </Style>
 
        <Style TargetType="Button">
            <Setter Property="MinHeight" Value="31"/>
            <Setter Property="Padding" Value="12,5"/>
            <Setter Property="Background" Value="#FFFFFF"/>
            <Setter Property="BorderBrush" Value="#B9C7DA"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="Foreground" Value="{StaticResource InkBrush}"/>
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="FontWeight" Value="SemiBold"/>
            <Setter Property="Cursor" Value="Hand"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="ButtonChrome"
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                CornerRadius="6">
                            <ContentPresenter HorizontalAlignment="Center"
                                              VerticalAlignment="Center"
                                              RecognizesAccessKey="True"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="ButtonChrome" Property="Background" Value="#EEF6FF"/>
                                <Setter TargetName="ButtonChrome" Property="BorderBrush" Value="#7FB3EA"/>
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="ButtonChrome" Property="Background" Value="#DDEEFF"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter TargetName="ButtonChrome" Property="Opacity" Value="0.55"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
 
        <Style x:Key="PrimaryButtonStyle" TargetType="Button">
            <Setter Property="Background" Value="{StaticResource AccentBrush}"/>
            <Setter Property="BorderBrush" Value="{StaticResource AccentDarkBrush}"/>
            <Setter Property="Foreground" Value="#FFFFFF"/>
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="FontWeight" Value="SemiBold"/>
            <Setter Property="Cursor" Value="Hand"/>
            <Setter Property="MinHeight" Value="34"/>
            <Setter Property="Width" Value="104"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="PrimaryButtonChrome"
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="1"
                                CornerRadius="6">
                            <ContentPresenter HorizontalAlignment="Center"
                                              VerticalAlignment="Center"
                                              RecognizesAccessKey="True"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="PrimaryButtonChrome" Property="Background" Value="#084B93"/>
                                <Setter TargetName="PrimaryButtonChrome" Property="BorderBrush" Value="#063F7D"/>
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="PrimaryButtonChrome" Property="Background" Value="#063F7D"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter TargetName="PrimaryButtonChrome" Property="Opacity" Value="0.55"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
 
        <Style x:Key="DangerButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
            <Setter Property="Background" Value="#FFF7F7"/>
            <Setter Property="BorderBrush" Value="#D1A0A0"/>
            <Setter Property="Foreground" Value="#9F2424"/>
            <Setter Property="Width" Value="104"/>
        </Style>
 
        <Style x:Key="HelpTextStyle" TargetType="TextBlock">
            <Setter Property="Foreground" Value="{StaticResource MutedBrush}"/>
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="Margin" Value="0,5,0,0"/>
            <Setter Property="TextWrapping" Value="Wrap"/>
            <Setter Property="MaxWidth" Value="510"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="TextAlignment" Value="Left"/>
        </Style>
 
        <Style x:Key="SectionTitleStyle" TargetType="TextBlock">
            <Setter Property="Foreground" Value="{StaticResource InkBrush}"/>
            <Setter Property="FontSize" Value="13"/>
            <Setter Property="FontWeight" Value="SemiBold"/>
            <Setter Property="Margin" Value="0,0,0,10"/>
        </Style>
    </Window.Resources>
 
    <Border Margin="14"
            Background="{StaticResource PanelBrush}"
            BorderBrush="{StaticResource LineBrush}"
            BorderThickness="1"
            CornerRadius="10">
        <Border.Effect>
            <DropShadowEffect BlurRadius="18" ShadowDepth="0" Opacity="0.14" Color="#334155"/>
        </Border.Effect>
 
        <DockPanel LastChildFill="True">
            <!-- Header -->
            <Border DockPanel.Dock="Top" CornerRadius="10,10,0,0" Padding="18,16">
                <Border.Background>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                        <GradientStop Color="#071C33" Offset="0"/>
                        <GradientStop Color="#0B4F9C" Offset="0.58"/>
                        <GradientStop Color="#17A2B8" Offset="1"/>
                    </LinearGradientBrush>
                </Border.Background>
 
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
 
                    <Border Width="42" Height="42" CornerRadius="9" Background="#1AFFFFFF" BorderBrush="#33FFFFFF" BorderThickness="1">
                        <Image Name="HeaderIcon" Width="28" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
 
                    <StackPanel Grid.Column="1" Margin="12,0,0,0" VerticalAlignment="Center">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="IntuneWinAppUtil GUI"
                                       FontSize="23"
                                       FontWeight="SemiBold"
                                       Foreground="#FFFFFF"
                                       VerticalAlignment="Center"/>
                            <Border Margin="10,0,0,0"
                                    Width="48"
                                    Height="22"
                                    CornerRadius="11"
                                    Background="#24FFFFFF"
                                    BorderBrush="#3DFFFFFF"
                                    BorderThickness="1"
                                    VerticalAlignment="Center">
                                <TextBlock Text="1.0.8"
                                           Foreground="#FFFFFF"
                                           FontSize="11"
                                           FontWeight="SemiBold"
                                           HorizontalAlignment="Center"
                                           VerticalAlignment="Center"
                                           TextAlignment="Center"/>
                            </Border>
                        </StackPanel>
                        <TextBlock Text="Win32 packaging assistant for Microsoft Intune"
                                   Foreground="#CDE8FF"
                                   FontSize="12"
                                   Margin="0,2,0,0"/>
                        <TextBlock Name="UpdateAvailableText"
                                   Text=""
                                   Foreground="#CDE8FF"
                                   FontSize="12"
                                   Margin="0,5,0,0"
                                   Visibility="Collapsed"/>
                    </StackPanel>
 
                    <Border Grid.Column="2" Padding="10,5" CornerRadius="12" Background="#1F000000" BorderBrush="#2DFFFFFF" BorderThickness="1" VerticalAlignment="Center">
                        <TextBlock Text="Package - Validate - Export" Foreground="#EAF6FF" FontSize="11" FontWeight="SemiBold"/>
                    </Border>
                </Grid>
            </Border>
 
            <Grid Margin="18">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
 
                <!-- Package inputs -->
                <Border Grid.Row="0"
                        Background="{StaticResource SoftPanelBrush}"
                        BorderBrush="{StaticResource LineBrush}"
                        BorderThickness="1"
                        CornerRadius="8"
                        Padding="14">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="150"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
 
                        <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Text="Package source" Style="{StaticResource SectionTitleStyle}"/>
 
                        <Label Grid.Row="1" Grid.Column="0" Content="* Source Folder (-c):"/>
                        <StackPanel Grid.Row="1" Grid.Column="1" Margin="0,0,0,10" MinHeight="35">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <TextBox Name="SourceFolder" Grid.Column="0" Margin="0,0,10,0"/>
                                <Button Name="BrowseSource" Content="Browse..." Grid.Column="1" Width="88"/>
                            </Grid>
                            <TextBlock Name="SourceFolderPathLength"
                                       Text="Path length: 0/260"
                                       Foreground="{StaticResource MutedBrush}"
                                       FontSize="11"
                                       Margin="0,4,0,0"
                                       Visibility="Collapsed"/>
                        </StackPanel>
 
                        <Label Grid.Row="2" Grid.Column="0" Content="* Setup File (-s):"/>
                        <StackPanel Grid.Row="2" Grid.Column="1" Margin="0,0,0,10" MinHeight="35">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <TextBox Name="SetupFile" Grid.Column="0" Margin="0,0,10,0"/>
                                <Button Name="BrowseSetup" Content="Browse..." Grid.Column="1" Width="88"/>
                            </Grid>
                            <TextBlock
                                Text="Valid MSI or EXE. PSADT packages are detected automatically; MSI metadata is used when script metadata is missing."
                                Style="{StaticResource HelpTextStyle}"/>
                        </StackPanel>
 
                        <Label Grid.Row="3" Grid.Column="0" Content="* Output Folder (-o):"/>
                        <StackPanel Grid.Row="3" Grid.Column="1" MinHeight="35">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <TextBox Name="OutputFolder" Grid.Column="0" Margin="0,0,10,0"/>
                                <Button Name="BrowseOutput" Content="Browse..." Grid.Column="1" Width="88"/>
                            </Grid>
                            <TextBlock Name="OutputFolderPathLength"
                                       Text="Path length: 0/260"
                                       Foreground="{StaticResource MutedBrush}"
                                       FontSize="11"
                                       Margin="0,4,0,0"
                                       Visibility="Collapsed"/>
                        </StackPanel>
                    </Grid>
                </Border>
 
                <!-- Tool and output options -->
                <Border Grid.Row="1"
                        Margin="0,12,0,0"
                        Background="#FFFFFF"
                        BorderBrush="{StaticResource LineBrush}"
                        BorderThickness="1"
                        CornerRadius="8"
                        Padding="14">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="150"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
 
                        <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Text="Tool and output" Style="{StaticResource SectionTitleStyle}"/>
 
                        <Label Grid.Row="1" Grid.Column="0" Content="IntuneWinAppUtil Path:"/>
                        <StackPanel Grid.Row="1" Grid.Column="1" Margin="0,0,0,10" MinHeight="50">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
 
                                <TextBox Name="ToolPathBox" Grid.Column="0" Margin="0,0,10,0" HorizontalScrollBarVisibility="Auto"/>
                                <Button Name="BrowseTool" Content="Browse..." Grid.Column="1" Width="88" Margin="0,0,10,0"/>
                                <Button Name="DownloadTool" Content="Force download" Grid.Column="2" Width="118"/>
                            </Grid>
 
                            <TextBlock Margin="0,5,0,0"
                                       Foreground="{StaticResource MutedBrush}"
                                       FontSize="12"
                                       TextWrapping="Wrap"
                                       MaxWidth="510"
                                       HorizontalAlignment="Left"
                                       TextAlignment="Left">
                                <Run Name="ToolVersionText" Text="IntuneWinAppUtil version: (not detected)"/>
                                <Run Text=" (" />
                                <Hyperlink NavigateUri="https://github.com/gioxx/IntuneWinAppUtilGUI/blob/main/Tools/IntuneWinAppUtilVersions.md" ToolTip="Open versions list page">Version history</Hyperlink>
                                <Run Text=")" />
                            </TextBlock>
 
                            <TextBlock
                                Text="Leave empty to download the latest tool automatically, or choose a specific executable."
                                Style="{StaticResource HelpTextStyle}"/>
                        </StackPanel>
 
                        <Label Grid.Row="2" Grid.Column="0" Content="Final filename:"/>
                        <StackPanel Grid.Row="2" Grid.Column="1" MinHeight="35">
                            <TextBox Name="FinalFilename"/>
                            <TextBlock
                                Text="Suggested from PSADT AppName/AppVersion, or from MSI metadata when those values are empty."
                                Style="{StaticResource HelpTextStyle}"/>
                        </StackPanel>
                    </Grid>
                </Border>
 
                <!-- Actions and guidance -->
                <Grid Grid.Row="2" Margin="0,14,0,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
 
                    <Border Grid.Column="0"
                            Background="#EEF6FF"
                            BorderBrush="#C5DCF6"
                            BorderThickness="1"
                            CornerRadius="8"
                            Padding="12"
                            HorizontalAlignment="Stretch"
                            Margin="0,0,12,0">
                        <TextBlock
                            Foreground="#33536F"
                            FontSize="12"
                            TextWrapping="Wrap"
                            MaxWidth="520"
                            HorizontalAlignment="Left"
                            TextAlignment="Left">
                            <Run Text="Required: Source folder, setup file and output folder(*)" FontWeight="SemiBold"/>
                            <LineBreak/>
                            <Run Text="Source path length is indicative; Run checks the longest file path before packaging."/>
                            <LineBreak/>
                            <Run Text="Final filename is optional. If empty, the tool uses the source folder name."/>
                            <LineBreak/>
                            <Run Text="IntuneWinAppUtil Path is optional; if empty, the latest tool is downloaded automatically."/>
                        </TextBlock>
                    </Border>
 
                    <StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
                        <Button Name="RunButton" Content="Run" Style="{StaticResource PrimaryButtonStyle}" Margin="0,0,8,0"/>
                        <Button Name="ClearButton" Content="Clear" Width="104" Margin="0,0,8,0"/>
                        <Button Name="ExitButton" Content="Exit (ESC)" Style="{StaticResource DangerButtonStyle}"/>
                    </StackPanel>
                </Grid>
 
                <TextBlock Grid.Row="3"
                           HorizontalAlignment="Right"
                           FontSize="11"
                           Margin="0,10,0,0"
                           Foreground="{StaticResource MutedBrush}">
                    <Run Text="Gioxx, 2026 - " />
                    <Hyperlink Name="HelpButton" ToolTip="Show command-line switches and keyboard shortcuts">
                        Help
                    </Hyperlink>
                    <Run Text=" - " />
                    <Hyperlink NavigateUri="https://github.com/gioxx/IntuneWinAppUtilGUI">
                        Available on GitHub
                    </Hyperlink>
                </TextBlock>
            </Grid>
        </DockPanel>
    </Border>
</Window>