Exemplo n.º 1
0
        /// <summary>
        /// Generate a Dynamo.addin file.
        /// </summary>
        /// <param name="data">An object containing data about the addin.</param>
        internal static void GenerateDynamoAddin(IDynamoAddinData data)
        {
            Console.WriteLine("Generating addin {0}", data.AddinPath);

            // If Revit has been installed, but not Run, the addins
            // folder will not exist. We need to create it.
            var dir = Path.GetDirectoryName(data.AddinPath);

            if (dir != null && !Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            using (var tw = new StreamWriter(data.AddinPath, false))
            {
                var addin = String.Format(
                    "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n" +
                    "<RevitAddIns>\n" +
                    "<AddIn Type=\"Application\">\n" +
                    "<Name>Dynamo For Revit</Name>\n" +
                    "<Assembly>\"{0}\"</Assembly>\n" +
                    "<AddInId>{1}</AddInId>\n" +
                    "<FullClassName>{2}</FullClassName>\n" +
                    "<VendorId>ADSK</VendorId>\n" +
                    "<VendorDescription>Dynamo</VendorDescription>\n" +
                    "</AddIn>\n" +
                    "</RevitAddIns>",
                    data.AssemblyPath, data.Id, data.ClassName
                    );

                tw.Write(addin);
                tw.Flush();
            }

            // Grant everyone permissions to delete this addin.
            //http://stackoverflow.com/questions/5298905/add-everyone-privilege-to-folder-using-c-net/5398398#5398398
            var sec      = File.GetAccessControl(data.AddinPath);
            var everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);

            sec.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.FullControl, AccessControlType.Allow));
            File.SetAccessControl(data.AddinPath, sec);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Generate a Dynamo.addin file.
        /// </summary>
        /// <param name="data">An object containing data about the addin.</param>
        internal static void GenerateDynamoAddin(IDynamoAddinData data)
        {
            Console.WriteLine("Generating addin {0}", data.AddinPath);

            // If Revit has been installed, but not Run, the addins
            // folder will not exist. We need to create it.
            var dir = Path.GetDirectoryName(data.AddinPath);
            if (dir!=null && !Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            using (var tw = new StreamWriter(data.AddinPath, false))
            {
                var addin = String.Format(
                    "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n" +
                    "<RevitAddIns>\n" +
                    "<AddIn Type=\"Application\">\n" +
                    "<Name>Dynamo For Revit</Name>\n" +
                    "<Assembly>\"{0}\"</Assembly>\n" +
                    "<AddInId>{1}</AddInId>\n" +
                    "<FullClassName>{2}</FullClassName>\n" +
                    "<VendorId>Dynamo</VendorId>\n" +
                    "<VendorDescription>Dynamo</VendorDescription>\n" +
                    "</AddIn>\n" +
                    "</RevitAddIns>",
                    data.AssemblyPath, data.Id, data.ClassName
                    );

                tw.Write(addin);
                tw.Flush();
            }

            // Grant everyone permissions to delete this addin.
            //http://stackoverflow.com/questions/5298905/add-everyone-privilege-to-folder-using-c-net/5398398#5398398
            var sec = File.GetAccessControl(data.AddinPath);
            var everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
            sec.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.FullControl, AccessControlType.Allow));
            File.SetAccessControl(data.AddinPath, sec);
        }