Переименование файлов конфигурации с помощью проекта установки Visual Studio - PullRequest
1 голос
/ 30 сентября 2010

Мои приложения имеют несколько файлов конфигурации, каждый из которых относится к машине, на которой они развертываются (dev, production и т. Д.). Я хочу добавить их в проект установки, используйте переключатели, чтобы выбрать один, а затемиметь сценарий (или, может быть, настраиваемое действие?), переименовать выбранные файлы в connectionStrings.config, settings.config и т. д.

Возможно ли это / возможно в проекте установки?

Чтобы дать вамПо идее, мои конфиги могут выглядеть так:

DEV connectionStrings.config
PROD connectionStrings.config

После того, как пользователь выберет DEV или PROD в интерфейсе радиоинсталлятора установщика, я бы хотел, чтобы выбранная конфигурация была переименована в

connectionStrings.config

Учитывая, что это проект установки VS, у меня такое чувство, что я слишком много просил, и я получу интересный ответ, как и большинство вопросов проекта установки:)

Ответы [ 3 ]

0 голосов
/ 12 июля 2016

Я создал проект установки для установки строк подключения, и я использовал следующее, которое отлично работает для меня.

Создайте файл installer.cs для установки. использование системы;

using System.Data.SqlClient;
using System.Xml;
using System.Configuration;
using System.Reflection;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
using System.Configuration.Install;


namespace YOURNAMESPACE
{

    [RunInstaller(true)]
    public partial class installer : System.Configuration.Install.Installer
    {

        public installer()
        {
            InitializeComponent();
        }
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            base.Install(stateSaver);

        }

        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);

            try
            {

                string DatabaseString1 = "FULL NAME OF CONNECTION STRING";
                ConnectionConfigure(DatabaseString1);


            }
            catch (Exception e)
            {
                base.Rollback(savedState);
            }
        }

        public override void Rollback(IDictionary savedState)
        {
            base.Rollback(savedState);
        }

        public override void Uninstall(IDictionary savedState)
        {
            base.Uninstall(savedState);
        }


        private void ConnectionConfigure(string DatabaseString)
        {
            string dataSource = "";
            dataSource = "Provider="+ Context.Parameters["InitialCatalog"]+ ";" + "Data Source=" + Context.Parameters["DataSource"];
            ExeConfigurationFileMap map = new ExeConfigurationFileMap();

            string configFile = string.Concat(Assembly.GetExecutingAssembly().Location, ".config");
            map.ExeConfigFilename = configFile;
            System.Configuration.Configuration config = System.Configuration.ConfigurationManager.
            OpenMappedExeConfiguration(map, System.Configuration.ConfigurationUserLevel.None);
            string connectionsection = config.ConnectionStrings.ConnectionStrings
            [DatabaseString].ConnectionString;


            ConnectionStringSettings connectionstring = null;
            if (connectionsection != null)
            {
                config.ConnectionStrings.ConnectionStrings.Remove(DatabaseString);

            }

            connectionstring = new ConnectionStringSettings(DatabaseString, dataSource);
            config.ConnectionStrings.ConnectionStrings.Add(connectionstring);

            config.Save(ConfigurationSaveMode.Modified, true);
            ConfigurationManager.RefreshSection("connectionStrings");

        }


    }
}

Добавьте вывод проекта в ваш проект установки, затем начните настройку этого проекта установки.

Проект установки правой кнопкой мыши

Добавление текстовых полей и создание пользовательского интерфейса

Установка пользовательских действий

Создание выходных действий проекта

Свойства пользовательских действий

Вот как я настраиваю мой (я приложил скриншоты, чтобы помочь объяснить мой процесс, но вкратце. Создайте файл проекта установки и файл installer.cs. Добавьте выходные данные проекта в проект установки, добавьте пользовательский интерфейс, чтобы пользователь мог ввести соединение строка и / или поставщик для строки подключения, добавьте пользовательские действия, чтобы входные данные могли быть прочитаны файлом installer.cs, а затем поздравляем его с изменением строки подключения. Надеюсь, это поможет.

0 голосов
/ 12 июля 2016

Я делал это много раз, и в основном я просто устанавливаю оба файла с разными именами.Приложение может спросить пользователя, какой файл использовать, и изменить его в любое время, так как многие пользователи не знают достаточно о приложении, чтобы сделать этот выбор во время установки.

Вы получите интересные ответы на такие вопросы установки, какэто потому, что многие люди хотят настроить приложение во время установки.Почему бы просто не позволить программе установки установить файлы и настроить приложение на собственную конфигурацию?

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

Я пришел к выводу, что это невозможно из-за недостатка параметров конфигурации проекта VS.Вместо этого я добавил элемент управления переключателем во время процесса установки и назначил выбор имени переменной.В файловой системе я добавил все свои конфигурационные файлы и затем установил условия для каждого.Они ссылались на значения для моих переключателей, чтобы копировать их во время развертывания.

...