Initial release v1.01 — InstaSoft Office Tool
Office deployment wizard for InstaSoft customers: - Install Office 2019/2021/2024 (Standard, Professional Plus, Home & Business) - Auto-download ODT from Microsoft, generate config XML, run setup - Remove existing Office installations (C2R + MSI) - License troubleshooting via ospp.vbs (dstatus, unpkey) - Fluent Design UI (WPF .NET Framework 4.8, Win7+ compatible) - Hungarian interface, multi-language Office installation - Product key input with auto-activation support Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
86
Pages/ConfigPage.xaml.cs
Normal file
86
Pages/ConfigPage.xaml.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using InstaSoftOfficeTool.Models;
|
||||
|
||||
namespace InstaSoftOfficeTool.Pages
|
||||
{
|
||||
public partial class ConfigPage : Page, IWizardPage
|
||||
{
|
||||
private readonly MainWindow _main;
|
||||
private readonly InstallConfig _config;
|
||||
private readonly List<CheckBox> _appCheckBoxes = new List<CheckBox>();
|
||||
|
||||
public ConfigPage(MainWindow main, InstallConfig config)
|
||||
{
|
||||
InitializeComponent();
|
||||
_main = main;
|
||||
_config = config;
|
||||
|
||||
// Restore arch
|
||||
if (_config.Architecture == "32")
|
||||
{
|
||||
Rb32.IsChecked = true;
|
||||
}
|
||||
|
||||
// Populate language combo
|
||||
foreach (var lang in LanguageList.Languages)
|
||||
{
|
||||
CbLanguage.Items.Add(new ComboBoxItem
|
||||
{
|
||||
Content = lang.Name + " (" + lang.Code + ")",
|
||||
Tag = lang.Code
|
||||
});
|
||||
}
|
||||
|
||||
// Select current language
|
||||
for (int i = 0; i < CbLanguage.Items.Count; i++)
|
||||
{
|
||||
var item = (ComboBoxItem)CbLanguage.Items[i];
|
||||
if ((string)item.Tag == _config.Language)
|
||||
{
|
||||
CbLanguage.SelectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (CbLanguage.SelectedIndex < 0) CbLanguage.SelectedIndex = 0;
|
||||
|
||||
// Populate app checkboxes
|
||||
foreach (var app in ExcludableApps.Apps)
|
||||
{
|
||||
var cb = new CheckBox
|
||||
{
|
||||
Content = app.DisplayName,
|
||||
IsChecked = !_config.ExcludedApps.Contains(app.Id),
|
||||
Tag = app.Id,
|
||||
Style = (Style)FindResource("FluentCheckBox"),
|
||||
Margin = new Thickness(0, 4, 24, 4),
|
||||
MinWidth = 160
|
||||
};
|
||||
_appCheckBoxes.Add(cb);
|
||||
AppCheckBoxes.Children.Add(cb);
|
||||
}
|
||||
}
|
||||
|
||||
public bool Validate()
|
||||
{
|
||||
_config.Architecture = Rb64.IsChecked == true ? "64" : "32";
|
||||
|
||||
if (CbLanguage.SelectedItem is ComboBoxItem selected)
|
||||
{
|
||||
_config.Language = (string)selected.Tag;
|
||||
}
|
||||
|
||||
_config.ExcludedApps.Clear();
|
||||
foreach (var cb in _appCheckBoxes)
|
||||
{
|
||||
if (cb.IsChecked != true)
|
||||
{
|
||||
_config.ExcludedApps.Add((string)cb.Tag);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user