using System.Collections.Generic; using System.IO; using System.Text; using Microsoft.Deployment.WindowsInstaller; namespace DimensionTools.AddInDeployer { public class CustomActions { public const string dllName = "DimensionTools.dll"; public const string addinName = "DimensionTools.addin"; [CustomAction] public static ActionResult Uninstaller(Session session) { session.Log("Begin Uninstaller"); var commonAppDataFolder = session["CommonAppDataFolder"]; var addinFilePath = $"{commonAppDataFolder}\\Autodesk\\DimensionTools.bundle"; Directory.Delete(addinFilePath,true); return ActionResult.Success; } [CustomAction] public static ActionResult Installer(Session session) { session.Log("Begin Installer"); var manufacturer = session["Manufacturer"]; var productName = session["ProductName"]; var appdir = session["APPDIR"]; //安装路径,根据用户选择 var sourceDir = session["SourceDir"]; //安装包解压路径 var programFiles64Folder = session["ProgramFiles64Folder"]; //64位安装路径,C:\ProgramFiles var commonAppDataFolder = session["CommonAppDataFolder"]; //C:\ProgramData var addinFilePath = $"{commonAppDataFolder}\\Autodesk\\DimensionTools.bundle\\Contents"; //List revitProductsInstalled = RevitProductUtility.GetAllInstalledRevitProducts(); //foreach (var product in revitProductsInstalled) //{ //} List dlls = new List(); DirectoryInfo dir = Directory.CreateDirectory(appdir); StringBuilder sb = new StringBuilder(); foreach (var fileInfo in dir.GetFiles("*", SearchOption.AllDirectories)) { if (fileInfo.Name == dllName) { dlls.Add(fileInfo); } } foreach (var dllPath in dlls) { var versionNum = dllPath.Directory.Name; AddInManager manager = new AddInManager(versionNum, addinName); manager.CreateApplication("标注工具", dllPath.FullName, "DimensionTools.UiRibbon"); manager.Uninstall(); manager.Install(); } return ActionResult.Success; } } }