Записи файла app.Config очищаются при восстановлении установленной программы установки. - PullRequest
1 голос
/ 24 октября 2011

Я создал проект установки для своего проекта.Этот проект подключается к работающему серверу БД через службы asmx.Этот URL будет определен после того, как клиент развернет веб-службы на каком-либо сервере.Поэтому в проекте установки я добавил диалог «TextBoxes» в разделе «Редактор интерфейса пользователя» в проекте установки, где я включил только один TextBox для получения URL-адреса развернутых сервисов.В моем проекте я добавил файл, который будет выполняться во время установки программы установки, и определил его следующим образом:

[RunInstaller(true)]
public class InstallerHelper : System.Configuration.Install.Installer
{
    // Other Code also exists that is not needed to be shown here<br/>    
    //.....
    // The following method gets executed during setup installation
    public override void Install(IDictionary stateSaver)
    {
        try
        {
            base.Install(stateSaver);

            //Proceed only if the Context object has some parameters
            if (Context.Parameters.Count != 0 && !string.IsNullOrEmpty(Context.Parameters["WEBSITEURL"]))
            {
                //Get the installation Folder's Path
                string installationFolder = Context.Parameters["INSTALLFOLDER"];

               // Get the Site's URL entered by Client
                string websiteUrl = Context.Parameters["WEBSITEURL"];

               //Create different Key Value pairs based on entered URL
                string[][] keyValues = {
                                new string[] {"SiteUrl",websiteUrl},
                                new string[] {"WebServiceURL", websiteUrl + "Users.asmx" },
                                new string[] {"TicketsServiceURL", websiteUrl + "Tickets.asmx"},
                                new string[] {"CampaignsAndProjetcsServiceURL", websiteUrl + "CampaignsAndProjetcs.asmx"},
                                new string[] {"EntitiesURL", websiteUrl + "Entities.asmx"},
                                new string[] {"AccountsURL", websiteUrl + "Accounts.asmx"},
                                new string[] {"TransactionsURL", websiteUrl + "Transactions.asmx"},
                                new string[] {"RelatedReportsURL", websiteUrl + "RelatedReports.asmx"},
                                new string[] {"GiftAidsURL", websiteUrl + "GiftAids.asmx"}
                               };

                // Load the app.Config file and store these values in it.
                //********************************************

                string configFilePath = installationFolder + @"\MyProject.exe.config";
                XmlDocument configuration = new XmlDocument();

                // Load App.Config File
                configuration.Load(configFilePath);

                //Add the values in it
                Utility.UpdateValue(keyValues, configuration);

             //Save configuration File
                configuration.Save(configFilePath);
              //********************************************<br/>
            }
        }
        catch (Exception ex)
        {
            throw new InstallException("The following Error(s) occured during installation. \n " + ex.Message);
        }
    }

}

Здесь я сохраняю введенный URL-адрес и некоторые другие сгенерированные URL-адресаразличные веб-сервисы в App.Config проекта, которые будут использоваться в проекте для доступа к данным.

Работает нормально, когда я устанавливаю свежую копию программы установки, но проблема возникает, когда я пытаюсь восстановить установленный проект, снова выполняя файл Setup.exe.

Процесс восстановления не запрашиваетчтобы я снова ввел URL, а также элементы, сохраненные в App.Config во время первой установки, будут потеряны.Таким образом, все приложение перестает работать.

Любая помощь с благодарностью

1 Ответ

1 голос
/ 24 октября 2011

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

  • создать несколько записей реестра , которые содержат ваши пользовательские свойства;значение записи в реестре может выглядеть примерно так:

    [WEBSITEURL]

  • создавать запросы реестра , которые читают эти записи и сохраняют их в ваших пользовательских свойствах;для этого используйте имена свойств для фактических поисков

Таким образом, восстановление будет считывать значения свойств из реестра и восстанавливать ваши исходные свойства.

Редактор реестра иЗапустить редактор условий можно, выбрав проект установки в обозревателе решений и нажав соответствующую кнопку на его верхней панели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...