From b5234c5ab1e9e6826b8d8fc1e95fa752aaa40b74 Mon Sep 17 00:00:00 2001
From: chr <chr@mailcom>
Date: 星期六, 02 十一月 2024 10:56:50 +0800
Subject: [PATCH] 优化程序
---
AutoUpdater/MainWindow.xaml.cs | 83 +++++++++++++++++++++++++++++++++++------
1 files changed, 70 insertions(+), 13 deletions(-)
diff --git a/AutoUpdater/MainWindow.xaml.cs b/AutoUpdater/MainWindow.xaml.cs
index 76d46fa..b4b590a 100644
--- a/AutoUpdater/MainWindow.xaml.cs
+++ b/AutoUpdater/MainWindow.xaml.cs
@@ -2,12 +2,12 @@
using AutoUpdater.Util;
using ICSharpCode.SharpZipLib.Zip;
using log4net;
+using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
-using System.Runtime.InteropServices;
using System.Threading;
using System.Windows;
using VersionControl;
@@ -130,20 +130,27 @@
/// </summary>
public void StartListenerProcess()
{
- string dir = Path.GetDirectoryName(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
- string path1 = Path.Combine(dir, "Listener", "SolidWorksListener.exe");
- if (File.Exists(path1))
+ try
{
- ProcessStartInfo info = new ProcessStartInfo
+ string dir = Path.GetDirectoryName(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
+ string path1 = Path.Combine(dir, "Listener", "SolidWorksListener.exe");
+ if (File.Exists(path1))
{
- FileName = path1,
- WorkingDirectory = Path.GetDirectoryName(path1)
- };
+ ProcessStartInfo info = new ProcessStartInfo
+ {
+ FileName = path1,
+ WorkingDirectory = Path.GetDirectoryName(path1)
+ };
- new Process
- {
- StartInfo = info
- }.Start();
+ new Process
+ {
+ StartInfo = info
+ }.Start();
+ }
+ }
+ catch (Exception ex)
+ {
+ Logger.Error("Start Listener Process Error!", ex);
}
}
@@ -330,10 +337,60 @@
DoFinished();
}
- private void DoFinished()
+ /// <summary>
+ /// 妫�鏌ヨ嚜鍚姩娉ㄥ唽琛�
+ /// </summary>
+ private void CheckAutoRunRegKey()
{
+ RegistryKey root = null;
+ RegistryKey key = null;
+ try
+ {
+ root = Registry.CurrentUser;
+ key = root.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
+ string name = "SolidWorksListener";
+ if (key == null)
+ {
+ key = root.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
+ }
+ // 娌℃湁璺緞鎴栬�呰矾寰勬寚鍚慹xe涓嶅锛屽氨鏇存柊鑷惎鍔ㄨ矾寰�
+ string listenerPath = key.GetValue(name)?.ToString();
+ string rootDir = new DirectoryInfo(Assembly.GetExecutingAssembly().Location).Parent.Parent.FullName;
+ string newPath = Path.Combine(rootDir, "Listener", "SolidWorksListener.exe");
+ //listenerPath = listenerPath.Replace("\"", "");
+ if (string.IsNullOrEmpty(listenerPath) || new Uri(listenerPath) != new Uri(newPath))
+ {
+ key.SetValue(name, newPath, RegistryValueKind.String);
+ }
+ }
+ catch (Exception e)
+ {
+ Logger.Error("CheckAutoRunRegKey Failed!", e);
+ }
+ finally
+ {
+ try
+ {
+ if (key != null) key.Close();
+ if (root != null) root.Close();
+ }
+ catch (Exception ex)
+ {
+ Logger.Error("Reg Key Close Failed!", ex);
+ }
+ }
+ }
+
+ private void BeforeRestart()
+ {
+ CheckAutoRunRegKey();
// 鍚姩鐩戝惉杩涚▼
StartListenerProcess();
+ }
+
+ private void DoFinished()
+ {
+ BeforeRestart();
label.Content = "鏇存柊瀹屾垚";
bar.IsIndeterminate = false;
if (SwAppPath != null)
--
Gitblit v1.9.1