/// <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); }
/// <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); }