Exemplo n.º 1
0
        public void RInstallation_Test04()
        {
            var tr = new RegistryMock(SimulateRegistry04());

            RInstallation.Registry = tr;

            RInstallation.GetCompatibleEnginePathFromRegistry().Should().BeNullOrEmpty();

            string dir = @"C:\Program Files\RRO\R-3.1.3";
            var    fs  = Substitute.For <IFileSystem>();
            var    fsi = Substitute.For <IFileSystemInfo>();

            fsi.Attributes.Returns(System.IO.FileAttributes.Directory);
            fsi.FullName.Returns(dir);
            fs.GetDirectoryInfo(@"C:\Program Files\RRO").EnumerateFileSystemInfos().Returns(new IFileSystemInfo[] { fsi });
            RInstallation.FileSystem = fs;

            RInstallData data = RInstallation.GetInstallationData(null, 3, 2, 3, 2);

            data.Status.Should().Be(RInstallStatus.PathNotSpecified);

            PretendRFilesAvailable(fs, dir);
            data = RInstallation.GetInstallationData(dir, 3, 2, 3, 2);
            data.Status.Should().Be(RInstallStatus.UnsupportedVersion);
        }
Exemplo n.º 2
0
 public RToolsSettingsImplementation()
 {
     // Default settings. Will be overwritten with actual
     // settings (if any) when settings are loaded from storage
     RBasePath         = RInstallation.GetCompatibleEnginePathFromRegistry();
     _workingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 }
Exemplo n.º 3
0
        private static string CollectGeneralData()
        {
            string generalDataFile = Path.Combine(Path.GetTempPath(), RtvsGeneralDataFile);

            using (var sw = new StreamWriter(generalDataFile)) {
                try {
                    sw.WriteLine("Operating System Information");
                    sw.WriteLine("    Version:       " + Environment.OSVersion.ToString());
                    sw.WriteLine("    CPU Count:     " + Environment.ProcessorCount);
                    sw.WriteLine("    64 bit:        " + Environment.Is64BitOperatingSystem);
                    sw.WriteLine("    System Folder: " + Environment.SystemDirectory);
                    sw.WriteLine("    Working set:   " + Environment.WorkingSet);
                    sw.WriteLine();

                    Assembly thisAssembly = Assembly.GetExecutingAssembly();
                    sw.WriteLine("RTVS Information:");
                    sw.WriteLine("    Assembly: " + thisAssembly.FullName);
                    sw.WriteLine("    Codebase: " + thisAssembly.CodeBase);
                    sw.WriteLine();

                    IEnumerable <string> rEngines = RInstallation.GetInstalledEngineVersionsFromRegistry();
                    sw.WriteLine("Installed R Engines (from registry):");
                    foreach (string e in rEngines)
                    {
                        sw.WriteLine("    " + e);
                    }
                    sw.WriteLine();

                    string latestEngine = RInstallation.GetCompatibleEnginePathFromRegistry();
                    sw.WriteLine("Latest R Engine (from registry):");
                    sw.WriteLine("    " + latestEngine);
                    sw.WriteLine();

                    string rInstallPath = RInstallation.GetRInstallPath(RToolsSettings.Current.RBasePath);
                    sw.WriteLine("R Install path:");
                    sw.WriteLine("    " + rInstallPath);
                    sw.WriteLine();

                    sw.WriteLine("Loaded assemblies:");

                    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().OrderBy(assem => assem.FullName))
                    {
                        var assemFileVersion = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false).OfType <AssemblyFileVersionAttribute>().FirstOrDefault();

                        sw.WriteLine(string.Format(CultureInfo.InvariantCulture, "    {0}, FileVersion={1}",
                                                   assembly.FullName,
                                                   assemFileVersion == null ? "(null)" : assemFileVersion.Version
                                                   ));
                    }
                } catch (System.Exception ex) {
                    sw.WriteLine("  Failed to access system data.");
                    sw.WriteLine(ex.ToString());
                    sw.WriteLine();
                }
            }

            return(generalDataFile);
        }
Exemplo n.º 4
0
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            IVsUIShell uiShell = VsAppShell.Current.GetGlobalService <IVsUIShell>(typeof(SVsUIShell));
            IntPtr     dialogOwner;

            uiShell.GetDialogOwnerHwnd(out dialogOwner);

            string latestRPath = Environment.SystemDirectory;

            try {
                latestRPath = RInstallation.GetCompatibleEnginePathFromRegistry();
                if (string.IsNullOrEmpty(latestRPath) || !Directory.Exists(latestRPath))
                {
                    // Force 64-bit PF
                    latestRPath = Environment.GetEnvironmentVariable("ProgramFiles");
                }
            } catch (ArgumentException) { } catch (IOException) { }

            return(Dialogs.BrowseForDirectory(dialogOwner, latestRPath, Resources.ChooseRInstallFolder));
        }
Exemplo n.º 5
0
        public static void WriteGeneralData(TextWriter writer, bool detailed)
        {
            try {
                writer.WriteLine("OS Information");
                writer.WriteLine("    Version:       " + Environment.OSVersion.ToString());
                if (detailed)
                {
                    writer.WriteLine("    CPU Count:     " + Environment.ProcessorCount);
                    writer.WriteLine("    64 bit:        " + Environment.Is64BitOperatingSystem);
                    writer.WriteLine("    System Folder: " + Environment.SystemDirectory);
                    writer.WriteLine("    Working set:   " + Environment.WorkingSet);
                }
                writer.WriteLine();

                Assembly thisAssembly = Assembly.GetExecutingAssembly();
                writer.WriteLine("RTVS Information:");
                writer.WriteLine("    Assembly: " + thisAssembly.FullName);
                if (detailed)
                {
                    writer.WriteLine("    Codebase: " + thisAssembly.CodeBase);
                }
                writer.WriteLine();

                if (detailed)
                {
                    IEnumerable <string> rEngines = RInstallation.GetInstalledEngineVersionsFromRegistry();
                    writer.WriteLine("Installed R Engines (from registry):");
                    foreach (string e in rEngines)
                    {
                        writer.WriteLine("    " + e);
                    }
                    writer.WriteLine();

                    string latestEngine = RInstallation.GetCompatibleEnginePathFromRegistry();
                    writer.WriteLine("Latest R Engine (from registry):");
                    writer.WriteLine("    " + latestEngine);
                    writer.WriteLine();
                }

                string rInstallPath = RInstallation.GetRInstallPath(RToolsSettings.Current.RBasePath);
                writer.WriteLine("R Install path:");
                writer.WriteLine("    " + rInstallPath);
                writer.WriteLine();

                if (detailed)
                {
                    writer.WriteLine("Assemblies loaded by Visual Studio:");

                    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().OrderBy(assem => assem.FullName))
                    {
                        var assemFileVersion = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false).OfType <AssemblyFileVersionAttribute>().FirstOrDefault();

                        writer.WriteLine(string.Format(CultureInfo.InvariantCulture, "    {0}, FileVersion={1}",
                                                       assembly.FullName,
                                                       assemFileVersion == null ? "(null)" : assemFileVersion.Version
                                                       ));
                    }
                }
            } catch (System.Exception ex) {
                writer.WriteLine("  Failed to access system data.");
                writer.WriteLine(ex.ToString());
                writer.WriteLine();
            } finally {
                writer.Flush();
            }
        }
Exemplo n.º 6
0
        public static void WriteGeneralData(TextWriter writer, bool detailed)
        {
            try {
                writer.WriteLine("OS Information");
                writer.WriteLine("    Version:       " + Environment.OSVersion);
                if (detailed)
                {
                    writer.WriteLine("    CPU Count:     " + Environment.ProcessorCount);
                    writer.WriteLine("    64 bit:        " + Environment.Is64BitOperatingSystem);
                    writer.WriteLine("    System Folder: " + Environment.SystemDirectory);
                    writer.WriteLine("    Working set:   " + Environment.WorkingSet);
                }
                writer.WriteLine();

                Assembly thisAssembly = Assembly.GetExecutingAssembly();
                writer.WriteLine("RTVS Information:");
                writer.WriteLine("    Assembly: " + thisAssembly.FullName);
                if (detailed)
                {
                    writer.WriteLine("    Codebase: " + thisAssembly.CodeBase);
                }
                writer.WriteLine();

                var ri       = new RInstallation();
                var workflow = VsAppShell.Current.ExportProvider.GetExportedValue <IRInteractiveWorkflowProvider>().GetOrCreate();
                if (detailed)
                {
                    IEnumerable <string> rEngines = ri.GetInstalledEngineVersionsFromRegistry();
                    writer.WriteLine("Installed R Engines (from registry):");
                    foreach (string e in rEngines)
                    {
                        writer.WriteLine("    " + e);
                    }
                    writer.WriteLine();

                    string latestEngine = ri.GetCompatibleEnginePathFromRegistry();
                    writer.WriteLine("Latest R Engine (from registry):");
                    writer.WriteLine("    " + latestEngine);
                    writer.WriteLine();

                    var connections = workflow.Connections.RecentConnections;
                    writer.WriteLine("Installed R Engines (from registry):");
                    foreach (var connection in connections)
                    {
                        writer.WriteLine($"    {connection.Name}: {connection.Id}");
                    }
                    writer.WriteLine();
                }

                var activeConnection = workflow.Connections.ActiveConnection;
                if (activeConnection != null)
                {
                    writer.WriteLine("Active R URI:");
                    writer.WriteLine($"    {activeConnection.Name}: {activeConnection.Id}");
                    writer.WriteLine();
                }

                if (detailed)
                {
                    writer.WriteLine("Assemblies loaded by Visual Studio:");

                    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies().OrderBy(assem => assem.FullName))
                    {
                        var assemFileVersion = assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false).OfType <AssemblyFileVersionAttribute>().FirstOrDefault();

                        writer.WriteLine(string.Format(CultureInfo.InvariantCulture, "    {0}, FileVersion={1}",
                                                       assembly.FullName,
                                                       assemFileVersion == null ? "(null)" : assemFileVersion.Version
                                                       ));
                    }
                }
            } catch (Exception ex) {
                writer.WriteLine("  Failed to access system data.");
                writer.WriteLine(ex.ToString());
                writer.WriteLine();
            } finally {
                writer.Flush();
            }
        }