Imports System.Text.RegularExpressions Imports System.XML Imports IniFile.IniFile Module Module1 Sub Main() RunPackageManager(My.Application.CommandLineArgs.Item(0)) End Sub Sub RunPackageManager(ByVal QueryURL As String) QueryURL.Replace("spm://", "") QueryURL.Replace("/", "") Dim match As Match = Regex.Match(QueryURL, "spm://(?'rID'.+?)\/\?(?'mode'.+?)=(?'package'.+)", RegexOptions.IgnoreCase) Dim RepositoryURL As String = match.Groups("rID").Value Dim Mode As String = match.Groups("mode").Value Dim PackageName As String = match.Groups("package").Value If System.IO.File.Exists("appupdater.ini") = True Then If System.IO.File.Exists("appupdater.bak") = True Then System.IO.File.Delete("appupdater.bak") End If System.IO.File.Move("appupdater.ini", "appupdater.bak") End If Dim AppUpdaterConfig As New IniFile.IniFile("appupdater.ini") AppUpdaterConfig.AddSection("global") AppUpdaterConfig.AddKey("status", "security, stable, beta", "global") AppUpdaterConfig.AddKey("unzip_params", "%i -d %tempdir", "global") AppUpdaterConfig.AddKey("http_proxy", "", "global") AppUpdaterConfig.AddKey("https_proxy", "", "global") AppUpdaterConfig.AddKey("unknown_txt", "cache\unknown.txt", "global") AppUpdaterConfig.AddKey("temp_dir", "cache\temp", "global") AppUpdaterConfig.AddKey("search_dirs", "${PROGRAMFILES}, ${SYSTEMDRIVE}\perl, ${SYSTEMDRIVE}\python25, ${WINDIR}\system32, ${ALLUSERSPROFILE}\Start Menu, ${USERPROFILE}\Start Menu, C:\Windows\System32, C:\Windows, C:\Windows\System32\Wbem, C:\Progra~1\Common~1\ULEADS~1\MPEG, C:\Program Files\AppUpdater, C:\Program Files\GNU\GUNPG, C:\Program Files\QuickTime\QTSYSTEM\, C:\Program Files\ShadowNET", "global") AppUpdaterConfig.AddKey("unzip", "unzip.py", "global") AppUpdaterConfig.AddKey("auto_download", "True", "global") AppUpdaterConfig.AddKey("reporting", "True", "global") AppUpdaterConfig.AddKey("ftp_proxy", "", "global") AppUpdaterConfig.AddKey("cache_dir", "cache", "global") AppUpdaterConfig.AddKey("auto_install", "True", "global") AppUpdaterConfig.AddKey("refresh_expire", "604800", "global") AppUpdaterConfig.AddKey("metalink_params", "-M %i -d %cache --allow-overwrite=true", "global") AppUpdaterConfig.AddKey("ignore", "", "global") AppUpdaterConfig.AddKey("package_lists", "", "global") AppUpdaterConfig.AddKey("cmd_prefix", "start /B /WAIT /BELOWNORMAL """"", "global") AppUpdaterConfig.AddKey("installed_txt", "cache\installed.txt", "global") AppUpdaterConfig.AddKey("index_hour", "2", "global") Dim stream As New IO.FileStream("repositories.xml", IO.FileMode.Open, IO.FileAccess.Read) Dim document As New XPath.XPathDocument(stream) Dim navigator As XPath.XPathNavigator = document.CreateNavigator() Dim nodes As XPath.XPathNodeIterator = navigator.Select("/repositories") Do While nodes.MoveNext() navigator = nodes.Current If navigator.MoveToChild("repositoryURL", navigator.NamespaceURI) Then If navigator.GetAttribute("name", navigator.NamespaceURI) = RepositoryURL Then Dim Apps_Url = navigator.Value Console.WriteLine(Apps_Url) AppUpdaterConfig.AddKey("apps_xml", Apps_Url + "/apps.xml", "global") End If End If Loop AppUpdaterConfig.Save("appupdater.ini") AppUpdaterConfig = Nothing Console.WriteLine("Executing Package Manager Application...") If Mode = "install" Then Dim p As New System.Diagnostics.Process Dim psi As New System.Diagnostics.ProcessStartInfo("appupdater.exe") psi.Arguments = "--install=""" + PackageName + """ --force --no-silent""" psi.RedirectStandardOutput = True psi.WindowStyle = ProcessWindowStyle.Hidden psi.UseShellExecute = False p.StartInfo = psi p.Start() While p.HasExited = False Console.WriteLine(p.StandardOutput) End While p.WaitForExit() ElseIf Mode = "remove" Then Dim p As New System.Diagnostics.Process Dim psi As New System.Diagnostics.ProcessStartInfo("appupdater.exe") psi.Arguments = "--remove=""" + PackageName + """ --force --no-silent""" psi.RedirectStandardOutput = True psi.WindowStyle = ProcessWindowStyle.Hidden psi.UseShellExecute = False p.StartInfo = psi p.Start() While p.HasExited = False Console.WriteLine(p.StandardOutput) End While p.WaitForExit() End If Console.ReadLine() End Sub End Module