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> |