Предлагаю посмотреть на Wix #. http://www.codeproject.com/Articles/31407/Wix-WixSharp-managed-interface-for-WiX.
Для разработчиков C #, которым необходимо создать MSI-установщик Windows для развертывания своего приложения, Wix #, пожалуй, лучшая замена для типа проекта «Упаковка и развертывание», который Microsoft удалил из Visual Studio, начиная с VS2012. Wix - это интерфейс C # для набора инструментов WiX, который позволяет создавать полный MSI-файл установщика Windows на языке C #.
Вы специально упомянули, что все ваши установщики - это простые проекты, которые устанавливают файлы в заданное место с настраиваемым действием во время установки, чтобы указать местоположение файлов .config (заменяя теги фактическими значениями).
Wix # подходит для этого типа требований, если ваши проекты действительно очень похожи, как вы указываете. Вы должны разработать хороший пример Wix # на C # для одной типичной программы, а затем клонировать его 100 раз (или сколько угодно раз) для каждого дополнительного установщика .vdproj, который вы заменяете. Еще лучше, если у вас есть член команды, который хорошо разбирается в шаблонах T4, вы можете использовать это для автоматизации процесса превращения вашего первого установщика прототипа C # Wix # в шаблон, а затем использовать этот шаблон для автоматического создания оставшиеся 99 файлов .cs Wix # для остальных ваших проектов.
Ниже приведен пример кода C # для запрашиваемого вами типа установщика Wix #. Предполагается, что вы написали служебную программу с именем «TailorMyConfig.exe», например, простую программу C #, которая использует процедуры ConfigurationManager.AppSettings, и развертываете этот исполняемый файл вместе со своим приложением.
using System;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Deployment.WindowsInstaller;
using WixSharp;
class Script
{
static public void Main(string[] args)
{
var project = new Project("MyProduct",
new Dir(@"%ProgramFiles%\My Company\My Product",
new File(@"Files\Bin\MyApp.exe"),
new File(@"Files\Bin\TailorMyConfig.exe")),
new ManagedAction("UpdateConfigFile"));
project.Id = new Guid("6f330b47-2577-43ad-9095-1861ba25889b");
Compiler.BuildMsi(project);
}
}
public class MyCustomAction
{
[CustomAction]
public static ActionResult UpdateConfigFile(Session session)
{
if (DialogResult.Yes == MessageBox.Show("Config file update ready to run.\n Update config file(s) now?",
"Config Tailoring Utility",
MessageBoxButtons.YesNo))
{
Process.Start("TailorMyConfig.exe", "Run utility to tailor config file to current system");
}
return ActionResult.Success;
}
}
Обратите внимание, что есть «лучшие» способы изменить файл конфигурации с помощью функций WiX. Для простоты в приведенном выше примере предполагалась написанная на заказ утилита C # exe для изменения файлов конфигурации. Я бы предложил вместо этого использовать возможности WiX XML. Вы можете включить практически любые возможности WiX XML непосредственно в настройку Wix #, используя технику Wix # «XML-инъекция».
Помните, что Wix # - это просто интерфейс C #, который испускает синтаксис WiX XML. После того, как Wix # отправит WiX XML (файл wxs), этот файл wxs можно легко подвергнуть последующей обработке для вставки дополнительных функций WiX XML. Затем получившийся файл wxs компилируется набором инструментов WiX в MSI.
Пример использования XML-инъекции для включения функций WiX XML в установку Wix # (C #) см. Здесь Как в Wix # избежать создания физической папки в целевой системе при развертывании только записей реестра? В этом вопросе см. Мой ответ, в котором используется техника подключения делегата к событию "WixSourceGenerated".
Затем вы можете использовать этот подход XML-инъекции, чтобы вставить некоторый WiX XML в ваш установщик, который будет выполнять редактирование файла конфигурации. Пример типичного WiX XML для изменения файлов конфигурации находится здесь: Как изменить файлы конфигурации .NET во время установки?
Я понимаю, что это несколько более старый вопрос, но он возник в моих поисках, поэтому я хочу, чтобы эта дополнительная опция Wix # была известна другим поисковикам. Подход Wix # оказался очень полезным в моей среде, и он позволяет использовать знакомый набор навыков C # без необходимости погружаться в полную сложность технологии установщика WiX XML.
person
Developer63
schedule
18.12.2014