添加项目文件。
This commit is contained in:
198
Sai.RvKits Setup/Program.cs
Normal file
198
Sai.RvKits Setup/Program.cs
Normal file
@@ -0,0 +1,198 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
|
||||
using WixSharp;
|
||||
using WixSharp.CommonTasks;
|
||||
|
||||
using WixToolset.Dtf.WindowsInstaller;
|
||||
|
||||
namespace Sai.RvKits_Setup
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
var baseFeature = new Feature("必要组件", "加载插件的必须组件") { Display = FeatureDisplay.hidden };
|
||||
var revit2018 = new Feature("Revit2018", "Revit2018的功能描述", true);
|
||||
//var revit2019 = new Feature("Revit2019", "Revit2019的功能描述") { IsEnabled = false };
|
||||
var revit2020 = new Feature("Revit2020", "Revit2020的功能描述", true);
|
||||
//var pluginsFolder = @"%CommonAppDataFolder%\Autodesk\ApplicationPlugins\Sai.RvKits.bundle";
|
||||
var pluginsFolder =
|
||||
$@"{Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)}\Autodesk\ApplicationPlugins\{Settings.AddInAppName}.bundle";
|
||||
//var project = new ManagedProject("建模工具集",
|
||||
// new Dir(@"%ProgramFiles%\Sai\Sai.RvKits",
|
||||
// new File("Program.cs"), new Files(@"..\Sai.RvKit\bin\Debug\*.*")));
|
||||
var project = new ManagedProject(
|
||||
"建模工具集",
|
||||
new WixEntity[]
|
||||
{
|
||||
//new Dir(@"%ProgramFiles%\Sai.RvKit"),
|
||||
new Dir(baseFeature, pluginsFolder, new File($@"..\bin\{Settings.AddInAppName}.bundle\PackageContents.xml")),
|
||||
new Dir(
|
||||
new Id("R18"),
|
||||
$@"{pluginsFolder}\Contents\2018",
|
||||
new WixEntity[]
|
||||
{
|
||||
new Files(revit2018, @"..\bin\Debug\2018\*.*") /*, new File(revit2018, @"..\bin\Debug\2018\Sai.RvKits.addin")*/
|
||||
}
|
||||
),
|
||||
//new Dir($"{pluginsFolder}\\Contents\\2019", new WixEntity[] { new Files(revit2019, @"..\bin\Debug\2019\*.*"), new File(revit2019, @"..\bin\Sai.RvKits.addin") }),
|
||||
new Dir(
|
||||
new Id("R20"),
|
||||
$@"{pluginsFolder}\Contents\2020",
|
||||
new WixEntity[]
|
||||
{
|
||||
new Files(revit2020, @"..\bin\Debug\2020\*.*") /*, new File(revit2020, @"..\bin\Debug\2020\Sai.RvKits.addin")*/
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
{
|
||||
UI = WUI.WixUI_Minimal,
|
||||
//GUID = new Guid("6fe30b47-2577-43ad-9095-1861ba25889b"),
|
||||
GUID = new Guid("0EB16058-1682-4620-BD5A-BD777BFD4934"),
|
||||
Language = "zh-cn",
|
||||
Version = new Version(1, 0, 0, 0),
|
||||
LocalizationFile = "WixUI_zh-CN.wxl",
|
||||
//Feature = baseFeature,
|
||||
DefaultFeature = revit2018,
|
||||
// all stock UI dialogs
|
||||
//ManagedUI = ManagedUI.DefaultWpf,
|
||||
//MSI包名称
|
||||
//project.OutFileName = "软件名称" + $"{DateTime.Now.Year}{DateTime.Now.Month:00}{DateTime.Now.Day:00}{DateTime.Now.Hour:00}{DateTime.Now.Minute:00}";
|
||||
//custom set of UI WPF dialogs
|
||||
ManagedUI = new ManagedUI(),
|
||||
ValidateBackgroundImage = false, //关闭背景图片大小验证
|
||||
BackgroundImage = @"Images\dlgbmp.png", //建议宽度156,高度312
|
||||
BannerImage = @"Images\bannerbmp.png",
|
||||
//安装新版本时自动卸载旧版本
|
||||
UpgradeCode = new Guid("511EED44-E344-4821-BF25-B42175CE41AC"),
|
||||
MajorUpgrade = new MajorUpgrade
|
||||
{
|
||||
AllowSameVersionUpgrades = true,
|
||||
DowngradeErrorMessage = "当前安装的版本低于已安装的版,无法再次安装。",
|
||||
AllowDowngrades = false,
|
||||
Schedule = UpgradeSchedule.afterInstallValidate
|
||||
}
|
||||
};
|
||||
project.OutFileName = $"建模工具集{project.Version}";
|
||||
project.Package.AttributesDefinition = "Platform=x64";
|
||||
project.ManagedUI.Icon = @"Images\Revit2021x.ico"; //标题栏图标
|
||||
//设置控制面板制造商名称
|
||||
project.ControlPanelInfo.Manufacturer = "Sai";
|
||||
//设置控制面板图标
|
||||
project.ControlPanelInfo.ProductIcon = @"Images\Revit2021x.ico";
|
||||
|
||||
//project.SourceBaseDir = "<input dir path>";
|
||||
//project.OutDir = "<output dir path>";
|
||||
|
||||
|
||||
project.SetNetFxPrerequisite(WixSharp.Condition.Net48_Installed, "请先安装.netFrameworks4.8");
|
||||
|
||||
project.ManagedUI.InstallDialogs
|
||||
.Add<Sai.RvKits_Setup.WelcomeDialog>()
|
||||
.Add<Sai.RvKits_Setup.LicenceDialog>()
|
||||
.Add<Sai.RvKits_Setup.FeaturesDialog>()
|
||||
.Add<Sai.RvKits_Setup.InstallDirDialog>()
|
||||
.Add<Sai.RvKits_Setup.ProgressDialog>()
|
||||
.Add<Sai.RvKits_Setup.ExitDialog>();
|
||||
|
||||
project.ManagedUI.ModifyDialogs
|
||||
.Add<Sai.RvKits_Setup.MaintenanceTypeDialog>()
|
||||
.Add<Sai.RvKits_Setup.FeaturesDialog>()
|
||||
.Add<Sai.RvKits_Setup.ProgressDialog>()
|
||||
.Add<Sai.RvKits_Setup.ExitDialog>();
|
||||
|
||||
//project.AddAction()
|
||||
project.Load += Project_Load;
|
||||
project.BeforeInstall += Project_BeforeInstall;
|
||||
project.AfterInstall += Project_AfterInstall;
|
||||
|
||||
project.BuildMsi();
|
||||
}
|
||||
|
||||
private static void Project_AfterInstall(SetupEventArgs e)
|
||||
{
|
||||
if (!e.IsUISupressed && !e.IsUninstalling)
|
||||
MessageBox.Show(e.ToString(), "AfterExecute");
|
||||
}
|
||||
|
||||
private static void Project_BeforeInstall(SetupEventArgs e)
|
||||
{
|
||||
if (!e.IsUISupressed && !e.IsUninstalling)
|
||||
MessageBox.Show(e.ToString(), "BeforeInstall");
|
||||
}
|
||||
|
||||
private static void Project_Load(SetupEventArgs e)
|
||||
{
|
||||
if (!e.IsUISupressed && !e.IsUninstalling)
|
||||
MessageBox.Show(e.ToString(), "Load");
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult Installer(Session session)
|
||||
{
|
||||
session.Log("Begin Installer");
|
||||
//MessageBox.Show("rundll32.exe");
|
||||
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\\{Settings.AddInFileName}.bundle\\Contents";
|
||||
//List<RevitProduct> revitProductsInstalled = RevitProductUtility.GetAllInstalledRevitProducts();
|
||||
//foreach (var product in revitProductsInstalled)
|
||||
//{
|
||||
//}
|
||||
var fileInfos = new List<System.IO.FileInfo>();
|
||||
var dir = System.IO.Directory.CreateDirectory(appDir);
|
||||
//var sb = new StringBuilder();
|
||||
foreach (var fileInfo in dir.GetFiles("*", System.IO.SearchOption.AllDirectories))
|
||||
{
|
||||
//var match = Regex.Match(filePath.Name, @"Sai\.RvKit\.dll$");
|
||||
//if (!match.Success)
|
||||
//{
|
||||
// match = Regex.Match(filePath.Name, @"(\d\d\d\d)\.exe$");
|
||||
|
||||
// if (!match.Success)
|
||||
// continue;
|
||||
//}
|
||||
//if (match.Success)
|
||||
//{
|
||||
// dlls.Add(filePath.FullName);
|
||||
//}
|
||||
if (fileInfo.Name == Settings.DllFileName)
|
||||
{
|
||||
fileInfos.Add(fileInfo);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var dllPath in fileInfos)
|
||||
{
|
||||
var versionNum = dllPath.Directory?.Name;
|
||||
var manager = new AddInManager(versionNum, Settings.AddInFileName);
|
||||
foreach (var fullName in Settings.RibbonFullClassNames)
|
||||
{
|
||||
manager.CreateApplication(Settings.AddInAppName, dllPath.FullName, fullName);
|
||||
}
|
||||
manager.Uninstall();
|
||||
manager.Install();
|
||||
}
|
||||
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult Uninstaller(Session session)
|
||||
{
|
||||
session.Log("Begin Uninstaller");
|
||||
var commonAppDataFolder = session["CommonAppDataFolder"];
|
||||
var addInFilePath = $"{commonAppDataFolder}\\Autodesk\\{Settings.AddInAppName}.bundle";
|
||||
System.IO.Directory.Delete(addInFilePath, true);
|
||||
return ActionResult.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user