Как создать установщик для обновления ASP.NET web.config, DLL, файлов и т. Д. - PullRequest
2 голосов
/ 12 ноября 2010

У меня есть надстройка для коммерческого сайта ASP.NET. Мое дополнение требует, чтобы люди объединяли записи в свои web.config, добавляли / перезаписывали существующие файлы и добавляли некоторые DLL-файлы в папку bin.

Есть ли хороший и безопасный способ создания установщика, чем это можно сделать с помощью мастера установки типа? Это действительно поможет нетехническим людям легко установить надстройку. Может быть, даже веб-установщик подойдет?

Любая помощь или предложения будут с благодарностью.

Ответы [ 2 ]

4 голосов
/ 12 ноября 2010

Была похожая проблема ...

Web.Config

  • Создана программа командной строки .NET, которую вы можете вызвать из установщика, передав ей путь web.config и другие аргументы, чтобы соответствовать тому, что я пытаюсь сделать
  • В программе командной строки вы можете затем изменить файл web.config в соответствии со своими потребностями ... Ниже приведен пример установки строки подключения и адреса stmp from в файле web.config

    public static void SetConnectionString(string name, string connString, string webConfigPath)
    {
        string directory = System.IO.Path.GetDirectoryName(webConfigPath);
        VirtualDirectoryMapping vdm = new VirtualDirectoryMapping(directory, true);
        WebConfigurationFileMap wcfm = new WebConfigurationFileMap();
        wcfm.VirtualDirectories.Add("/", vdm);
        System.Configuration.Configuration webConfig = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
        webConfig.ConnectionStrings.ConnectionStrings[name].ConnectionString = connString;
        webConfig.Save();
    }
    
    
    public static void SetFromAddress(string email, string webConfigPath)
    {
        string directory = System.IO.Path.GetDirectoryName(webConfigPath);
        VirtualDirectoryMapping vdm = new VirtualDirectoryMapping(directory, true);
        WebConfigurationFileMap wcfm = new WebConfigurationFileMap();
        wcfm.VirtualDirectories.Add("/", vdm);
        System.Configuration.Configuration webConfig = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/"); 
        System.Net.Configuration.MailSettingsSectionGroup mailSettings = (System.Net.Configuration.MailSettingsSectionGroup)webConfig.GetSectionGroup("system.net/mailSettings");
        mailSettings.Smtp.From = email;
        webConfig.Save();
    }
    

Установщик

Я использовал NSIS (http://nsis.sourceforge.net/Main_Page). Используйте HM NIS Edit в качестве хорошей отправной точки, так как у него есть мастер, который будет генерировать скрипты для вас. Оттуда вы можете модифицировать скрипты для своего В моем случае я вызвал программу командной строки после того, как файлы были установлены. Пример скрипта NSIS ниже.

Section "My Config Wizard" SecWizard
ExecWait '"$INSTDIR\Bin\My.Config.Wizard.exe" "$INSTDIR"'
Return
SectionEnd

Удачи! Нужно больше примеров, просто ударил меня. : P

0 голосов
/ 12 ноября 2010

web.config - сложная часть. Ваш первый установщик развернет файл XML, а затем пользователь что-то изменит в нем. Между тем у вас есть другая сборка, в которой разработчик вносит изменения в XML, и теперь установщик должен попытаться выяснить, как это должно объединить все вместе.

Из коробки не может.

2 стратегии, которые я использовал на протяжении многих лет:

1) Имейте установщика достаточно сообразительным, чтобы выбирать ключевые элементы информации из xml перед заменой xml. Затем примените информацию обратно.

2) Создайте в своем программном обеспечении 2 файла XML. Один, который установщик может безопасно перезаписать, другой - как переопределение, которое пользователь может безопасно изменить.

...