Files
DimensionTools/DimensionTools.AddInDeployer/CustomAction.cs
2026-02-23 11:05:30 +08:00

63 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<RevitProduct> revitProductsInstalled = RevitProductUtility.GetAllInstalledRevitProducts();
//foreach (var product in revitProductsInstalled)
//{
//}
List<FileInfo> dlls = new List<FileInfo>();
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;
}
}
}