Путь установки определяется во время установки.
Другими словами: установщик определяет, установлена ли SSMS 21, и получает ее местоположение. Этот путь следует использовать в качестве пути установки расширения, например
\Common7\IDE\Extension
Как использовать динамически обнаруженный путь установки во время установки?
Функция настраиваемого действия обнаружила путь и установила для него значение EXTENSION_FOLDER сеанса, но я не могу получить его и использовать в сборке MSI. Как?
Вот моя основная функция:
static void Main(string[] args)
{
// Dynamically resolve payload path
string payloadPath = Path.GetFullPath(@"..\DbExtension\bin\Release");
var project = new ManagedProject("DbExtension");
// Add Dir after EXTENSION_FOLDER is set
project.Dirs = new[]
{
new Dir(@"[EXTENSION_FOLDER]",
new Files(Path.Combine(payloadPath, "*.*"))
)
};
project.BeforeInstall += (SetupEventArgs e) =>
{
e.Session.Log($"
};
project.Actions = new[]
{
new ManagedAction(CustomActions.DetectPath, Return.check, When.Before, Step.LaunchConditions, Condition.NOT_Installed),
};
project.GUID = new Guid("79DEF6F1-43EF-44ED-B4E2-CFA9D5E98166");
project.Version = new Version("1.0.0.0");
project.InstallPrivileges = InstallPrivileges.elevated;
project.InstallScope = InstallScope.perMachine;
project.ControlPanelInfo.Manufacturer = "Manufacturer";
Compiler.BuildMsi(project, @"bin\Release\DbExtension.msi");
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-install
Мобильная версия