Skip to content

Commit

Permalink
💽 Install Fix
Browse files Browse the repository at this point in the history
💖 Исправление установки на LTSC Windows
💖 Добавление поддержки msixbundle установки/обновления
💖 Исправление обновления через PowerShell
  • Loading branch information
MaKrotos committed Jan 12, 2024
1 parent aad8c4a commit 3babeae
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 281 deletions.
1 change: 1 addition & 0 deletions Setup/Setup.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Setup/Setup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ private async void button1_Click(object sender, EventArgs e)
{

appUpdater.DownloadProgressChanged += AppUpdater_DownloadProgressChanged;

button1.Enabled = false;
await appUpdater.DownloadAndOpenFile();

Close();
}

Expand Down
81 changes: 38 additions & 43 deletions SetupLib/AppUpdater.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,61 +30,65 @@ public class DownloadProgressChangedEventArgs : EventArgs
public string version;
public string Name { get; private set; }
public string Tit { get; private set; }
public string date { get; private set; }
public int sizeFile;
public string UriDownload { get; private set; }
public string UriDownloadMSIX { get; private set; }

public async Task<bool> CheckForUpdates()
{
var releases = await client.Repository.Release.GetAll("MaKrotos", "VKUI3");
var latestRelease = releases[0];

if (latestRelease.TagName == currentVersion)
foreach (var release in releases)
{
Console.WriteLine("Ваше приложение обновлено до последней версии.");
return false;
}
if (string.Compare(release.TagName, currentVersion) <= 0)
{
Console.WriteLine("Версия вашего приложения не ниже, чем последняя версия.");
return false;
}

if (string.Compare(latestRelease.TagName, currentVersion) < 0)
{
Console.WriteLine("Версия вашего приложения выше, чем последняя версия.");
return false;
}
var msixAsset = release.Assets.FirstOrDefault(asset => asset.Name.EndsWith(".msixbundle"))
?? release.Assets.FirstOrDefault(asset => asset.Name.EndsWith(".msix")) ?? null;

Console.WriteLine($"Доступна новая версия: {latestRelease.TagName}");
if (msixAsset != null)
{
Console.WriteLine($"Доступна новая версия: {release.TagName}");

this.version = latestRelease.TagName;
this.Name = latestRelease.Name;
this.Tit = latestRelease.Body.ToString();
this.version = release.TagName;
this.Name = release.Name;
this.Tit = release.Body.ToString();

// Ищем файлы .cer и .msix в активах
var cerAsset = latestRelease.Assets.FirstOrDefault(asset => asset.Name.EndsWith(".cer"))?? null;
var msixAsset = latestRelease.Assets.FirstOrDefault(asset => asset.Name.EndsWith(".msix"));
var cerAsset = release.Assets.FirstOrDefault(asset => asset.Name.EndsWith(".cer")) ?? null;

if (cerAsset == null)
{
// Если сертификат не найден, ищем его в более старых релизах
foreach (var oldRelease in releases.Where(r => string.Compare(r.TagName, release.TagName) < 0))
{
cerAsset = oldRelease.Assets.FirstOrDefault(asset => asset.Name.EndsWith(".cer")) ?? null;
if (cerAsset != null)
{
break;
}
}
}

if (cerAsset == null)
{
foreach (var item in releases)
{
cerAsset = latestRelease.Assets.FirstOrDefault(asset => asset.Name.EndsWith(".cer")) ?? null;
if (cerAsset != null)
{
break;
this.sizeFile = msixAsset.Size;
this.UriDownload = cerAsset.BrowserDownloadUrl;
this.UriDownloadMSIX = msixAsset.BrowserDownloadUrl;
return true;
}
}
}

if (cerAsset != null && msixAsset != null)
{
this.sizeFile = msixAsset.Size;
this.UriDownload = cerAsset.BrowserDownloadUrl;
this.UriDownloadMSIX = msixAsset.BrowserDownloadUrl;
return true;
}

Console.WriteLine("В папке релиза нет файла msixAsset.");
return false;
}



public async Task DownloadAndOpenFile()
{
var httpClient = new HttpClient();
Expand Down Expand Up @@ -211,7 +215,7 @@ public async Task DownloadAndOpenFile()
{

string appName = "FDW.VKM";
string command = $"Add-AppxPackage -Path {path}";
string command = $"Add-AppxPackage -Path {path}; if ((Get-AppxPackage).Name -like '*{appName}*') {{ $pkg = (Get-AppxPackage -Name *{appName}*).PackageFamilyName; Start-Process \"explorer.exe\" -ArgumentList \"shell:AppsFolder\\$pkg!App\" }} else {{ Write-Output \"false\" }}";
ProcessStartInfo startInfo = new ProcessStartInfo()
{
FileName = "powershell.exe",
Expand All @@ -222,24 +226,15 @@ public async Task DownloadAndOpenFile()
};
Process process = new Process() { StartInfo = startInfo };
process.Start();
process.WaitForExit();

command = $"if ((Get-AppxPackage).Name -like '*{appName}*') {{ (Get-AppxPackage -Name *{appName}*).PackageFamilyName }} else {{ Write-Output \"false\" }}";
startInfo.Arguments = $"-Command \"{command}\"";
process = new Process() { StartInfo = startInfo };
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();

if (!output.Contains("false"))
{
Process.Start("explorer.exe", $"shell:AppsFolder\\{output.Trim()}!App");
}
else
if (output.Contains("false"))
{
Console.WriteLine($"{appName} не найден");
}


}
}
}
Expand Down
Loading

0 comments on commit 3babeae

Please sign in to comment.