+ Reply to Thread
Page 4 of 4 FirstFirst ... 2 3 4
Results 31 to 38 of 38

Thread: Beta Testing

  1. #31
    Forum Deity SEANT's Avatar
    Using
    AutoCAD 2014
    Join Date
    Aug 2005
    Location
    Rhode Island
    Posts
    2,453

    Default

    Registered forum members do not see this ad.

    Damn, that's sound pretty ugly. It was a good pickup on your end to equate their use of pirated software to a customer that would not honor their contracts. It would suck to have found that out after several more months of program development.

  2. #32
    Administrator CADTutor's Avatar
    Computer Details
    CADTutor's Computer Details
    Operating System:
    Windows 7 Home Premium 64bit
    Motherboard:
    Asus P7P55D-E PRO
    CPU:
    Intel Core i7-860
    RAM:
    4GB PC3-12800 C8 Corsair Dominator
    Graphics:
    NVIDIA Quadro FX 1800 768 MB
    Primary Storage:
    Intel X25-M SSD 160GB
    Secondary Storage:
    Samsung Spinpoint 320GB
    Monitor:
    BenQ FP241W 24" Wide
    Discipline
    Education
    CADTutor's Discipline Details
    Occupation
    Senior Lecturer (Digital Design), Landscape Architect & Web Designer
    Discipline
    Education
    Using
    AutoCAD 2015
    Join Date
    Aug 2002
    Location
    Hampshire, UK
    Posts
    3,731

    Default

    Just moved this thread to the Application Beta Testing forum since it contains relevant information.
    Tip: Please do not PM or email me with CAD questions - use the forums, you'll get an answer sooner.
    AutoCAD Tutorials | How to add images to your posts | How to register successfully | Forum FAQ

  3. #33
    Forum Deity SEANT's Avatar
    Using
    AutoCAD 2014
    Join Date
    Aug 2005
    Location
    Rhode Island
    Posts
    2,453

    Default

    Thanks, David. Here is where this thread belongs.

  4. #34
    Senior Member Jeff H's Avatar
    Using
    MEP 2011
    Join Date
    Oct 2010
    Posts
    186

    Default

    I wish this would pickup more traction and would be very useful.


    The only thing I could think off adding would be to testing add-in loader, remover etc..... type tool that loaded first then copied or deleted whatever files needed. User had UI to select to update, remove, etc...
    You can also find your answers @ theswamp.org

  5. #35
    Forum Deity SEANT's Avatar
    Using
    AutoCAD 2014
    Join Date
    Aug 2005
    Location
    Rhode Island
    Posts
    2,453

    Default

    Quote Originally Posted by Jeff H View Post
    I wish this would pickup more traction and would be very useful.


    The only thing I could think off adding would be to testing add-in loader, remover etc..... type tool that loaded first then copied or deleted whatever files needed. User had UI to select to update, remove, etc...
    That’s interesting. A ‘Version Coordination’ program for long term beta development. Am I reading that correctly?

    That deserves some though. Substituting Dlls without the need for uninstall/reinstall would make the process easier on the tester. If the process could smoothed out and simplified, the general angst associated with using non-polished software would be diminished.

  6. #36
    Senior Member Jeff H's Avatar
    Using
    MEP 2011
    Join Date
    Oct 2010
    Posts
    186

    Default

    Here is something that I use at office and needs some additional functionality added but is not what was explained above but somewhat in same neighborhood.

    Quick summary is this goes plug-in folder and reads .loadconfig which tells it what directories to go and look for a .loaddata file. The .loadata file tells it what files to copy to its folder or overwrite if newer, then netload which dll's.

    So gives you chance to update files before netloaded and could be refactored to go online on exit to get updates, and delete from plug-in and update folder if user decides to remove.


    The .loadconfig file tells the loader where the .loaddata


    loaddata file
    Code:
    <?xml version="1.0" encoding="utf-8" ?>
    <AddInLoaderData CopySubDirectories ="false" ExtensionFilter =".dll|.cuix|.mnr">
      <LoadFiles>
         <LoadFile>HpadCad.App.dll</LoadFile>
    	 <LoadFile>HpadCad.SSM.dll</LoadFile>
      </LoadFiles>
    </AddInLoaderData>
    The xml file above basically tells it not to copy subdirectories, what extension a file must have to copy, and which files to netload.


    Code:
        public class Loader
        {
            static readonly string loadDataFileName = "HpadCadAddInLoaderData.loadData";
            static readonly string loadConfigFileName = "HpadCadAddinLoader.loadconfig";
            private Dictionary<FileSystemInfo, SystemException> exceps = new Dictionary<FileSystemInfo, SystemException>();
            private readonly Editor _ed;
     
            private readonly DirectoryInfo _netLoaderDirectoryPath;
    
            internal DirectoryInfo NetLoaderDirectoryPath
            {
                get
                {
                    return _netLoaderDirectoryPath;
                }
            }
            public Loader()
            {
               
                _netLoaderDirectoryPath = new DirectoryInfo(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
            }
    
            public void Load()
            {
    
                try
                {
    
                    Copy();
    
                }
                finally
                {
                    foreach (var systemException in exceps)
                    {
                        //Ed.WriteMessage("\n{0} had {1]", systemException.Key.FullName, systemException.Value.Message);
                    }
                }
    
            }
    
            private void Copy()
            {
                
                FileInfo loadconfigFile = GetFilePathFromAddinLoaderDirectory(loadConfigFileName);
                if (!loadconfigFile.Exists)
                {
                    return;
                }
    
                var xconfigDoc = XElement.Load(loadconfigFile.FullName);
                var updateDirectoryAttribute = xconfigDoc.Attribute("UpdateDirectory");
                if (updateDirectoryAttribute == null)
                {
                    return;
                }
                var updateDirectory = ExpandDirectoryPath(updateDirectoryAttribute.Value);
                if (!updateDirectory.Exists)
                {
                    return;
                    
                }
    
                
                FileInfo updateDataFile = CombineFileNameAndDirectoryPath(loadDataFileName, updateDirectory);
                if (!updateDataFile.Exists)
                {
                    return;
                }
    
                var xDataDoc = XElement.Load(updateDataFile.FullName);
    
                var copySubsAttribute = xDataDoc.Attribute("CopySubDirectories");
                bool copySubs = false;
                if (copySubsAttribute != null)
                {
                    copySubs = Convert.ToBoolean(copySubsAttribute.Value);
                }
    
                var extensionFiltersAttribute = xDataDoc.Attribute("ExtensionFilter");
                var extensionFilters = new HashSet<string>();
                if (extensionFiltersAttribute != null)
                {
                    var filter = extensionFiltersAttribute.Value;
                    if (!String.IsNullOrWhiteSpace(filter))
                    {
                        extensionFilters = new HashSet<string>(filter.Split('|'), StringComparer.OrdinalIgnoreCase);
                    }
                }
    
                exceps = CopyFiles(updateDirectory, NetLoaderDirectoryPath, extensionFilters, copySubs);
                foreach (var loadFile in xDataDoc.Descendants("LoadFile"))
                {
                    var assemblyFI = GetFilePathFromAddinLoaderDirectory(loadFile.Value);
                    Assembly.LoadFrom(assemblyFI.FullName);
                }
            }
    
            private Dictionary<FileSystemInfo, SystemException> CopyFiles(DirectoryInfo sourceDirectory, DirectoryInfo destinationDirectory, ICollection<string> extensionFilters, bool copySubDirectories)
            {
                var exceptions = new Dictionary<FileSystemInfo, SystemException>();
    
                return CopyFiles(sourceDirectory, destinationDirectory, extensionFilters, copySubDirectories, exceptions);
            }
            private Dictionary<FileSystemInfo, SystemException> CopyFiles(DirectoryInfo sourceDirectory, DirectoryInfo destinationDirectory, ICollection<string> extensionFilters, bool copySubDirectories, Dictionary<FileSystemInfo, SystemException> exceptions)
            {
                
                if (!destinationDirectory.Exists)
                {
                    try
                    {
                        destinationDirectory.Create();
                    }
                    catch (IOException ex)
                    {
                        exceptions.Add(destinationDirectory, ex);
                    }
                    catch (SecurityException se)
                    {
                        exceptions.Add(destinationDirectory, se);
                    }
                }
                foreach (var fi in sourceDirectory.GetFilteredFiles(extensionFilters))
                {
    
                    FileInfo newFile = new FileInfo(Path.Combine(destinationDirectory.FullName, fi.Name));
    
    
                    if (!newFile.Exists)
                    {
                        try
                        {
                            fi.CopyTo(newFile.FullName);
                        }
                        catch (IOException ex)
                        {
                            exceptions.Add(newFile, ex);
                        }
                        catch (SecurityException se)
                        {
                            exceptions.Add(newFile, se);
                        }
                    }
                    else if (fi.LastWriteTimeUtc > newFile.LastWriteTimeUtc)
                    {
                        try
                        {
                            fi.CopyTo(newFile.FullName, true);
                        }
                        catch (IOException ex)
                        {
                            exceptions.Add(newFile, ex);
                        }
                        catch (SecurityException se)
                        {
                            exceptions.Add(newFile, se);
                        }
                    }
    
    
                }
    
                if (copySubDirectories)
                {
                    foreach (var subDi in sourceDirectory.EnumerateDirectories())
                    {
                        var tempDI = new DirectoryInfo(Path.Combine(destinationDirectory.FullName, subDi.Name));
                        CopyFiles(subDi, tempDI, extensionFilters, true, exceptions);
                    }
                }
                return exceptions;
            }
            private DirectoryInfo ExpandDirectoryPath(string unExpandedPath)
            {
                return new DirectoryInfo(Environment.ExpandEnvironmentVariables(unExpandedPath));
            }
    
            private FileInfo GetFilePathFromAddinLoaderDirectory(string fileName)
            {
                return new FileInfo(Path.Combine(NetLoaderDirectoryPath.FullName, fileName));
            }
    
            private FileInfo CombineFileNameAndDirectoryPath(string fileName, string directoryName)
            {
                return new FileInfo(Path.Combine(directoryName, fileName));
            }
    
            private FileInfo CombineFileNameAndDirectoryPath(string fileName, DirectoryInfo directoryInfo)
            {
                return CombineFileNameAndDirectoryPath(fileName, directoryInfo.FullName);
            }
    
    
        }
    Oh yeah will need this one
    Code:
        public static class DirectoryInfoExtensions
        {
            internal static IEnumerable<FileInfo> GetFilteredFiles(this DirectoryInfo sourceDirectory,
                ICollection<string> extensions)
            {
                if (extensions.Count == 0)
                {
                    return sourceDirectory.EnumerateFiles();
                }
                return sourceDirectory.EnumerateFiles().Where(fi => extensions.Contains(fi.Extension));
            }
        }
    What this allows me to do is to add a build to the solution that output folder is on the network and next time user starts autocad they will get latest build unless they have another instance running then will get it when that start next with no other instances locking files
    You can also find your answers @ theswamp.org

  7. #37
    Forum Deity SEANT's Avatar
    Using
    AutoCAD 2014
    Join Date
    Aug 2005
    Location
    Rhode Island
    Posts
    2,453

    Default

    Thanks Jeff. I'll be sure to look into everything you posted above. A nice, natural progression, though not something I had previously considered.

  8. #38
    Luminous Being BlackBox's Avatar
    Computer Details
    BlackBox's Computer Details
    Operating System:
    Windows 8.1 Professional, Server 2012 R2 Datacenter
    Computer:
    Dell Precision T3600
    CPU:
    Hex-Core Intel Xeon 3.2Ghz
    RAM:
    32GB
    Graphics:
    3GB NVIDIA Quadro K4000
    Primary Storage:
    2 x 240GB Samsung EVO SSD (RAID 0)
    Secondary Storage:
    1TB Western Digital VelociRaptor 10K RPM
    Monitor:
    Dual 24" Dell Ultrasharp Widescreen Monitors
    Discipline
    Civil
    BlackBox's Discipline Details
    Occupation
    Senior Civil Designer
    Discipline
    Civil
    Details
    Public/Private Land Development, Transportation, and Utilities.
    Using
    Civil 3D 2016
    Join Date
    Nov 2009
    Posts
    5,282

    Default

    Registered forum members do not see this ad.

    Neat idea, Jeff - As usual.
    "Potential has a shelf life." - Margaret Atwood
    AutoCAD, and Civil 3D Certified Professional | Autodesk Authorized Developer
    Sincpac C3D ~ Exchange Apps ~ Autoloader ~ AutoCAD Security

Similar Threads

  1. Sign Up for Navisworks Beta Testing
    By Between the Lines in forum AutoCAD RSS Feeds
    Replies: 0
    Last Post: 10th Dec 2013, 10:00 pm
  2. 3D Injector (Beta testing)
    By jgabase in forum AutoCAD 3D Modelling & Rendering
    Replies: 7
    Last Post: 3rd May 2012, 02:57 pm
  3. Join the Beta Testing for AutoCAD Ironman
    By Between the Lines in forum AutoCAD RSS Feeds
    Replies: 0
    Last Post: 22nd Nov 2010, 08:10 pm
  4. DWF Viewer Beta Testing Opportunity
    By Between the Lines in forum AutoCAD RSS Feeds
    Replies: 0
    Last Post: 5th Dec 2006, 03:21 am

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts