Загрузите индивидуальную настройку с URL-адреса с параметрами строки запроса

Я создал приложение-службу Windows, в котором хочу создать установочный файл. Когда Пользователь запрашивает приложение через URL-адрес нашего веб-сайта с параметрами запроса (например: http://test.com/setup.exe?id=1212) Мне нужно изменить текущее значение ключа app.config на это значение параметра запроса.

Мне также нужно автоматически обновлять это приложение, когда будет готова новая версия. Так что ClickOnce или squirrel для окон могут быть вариантом, но я не смог найти способ выполнить указанную выше задачу.

Следующие вопросы немного похожи, но не решают эту проблему: * Как получить информацию о строке запроса в приложении ClickOnce? * ClickOnce: Как передать значение querystring моему приложению * через установщик *?

Как я могу этого добиться?


person LittleOne    schedule 23.08.2016    source источник
comment
Какой шаг терпит неудачу? Вы успешно получаете строку запроса в своем приложении?   -  person Zesty    schedule 23.08.2016
comment
Дайте мне знать, если это сработает для вас.   -  person Zesty    schedule 23.08.2016
comment
Спасибо @Zesty за быстрый ответ. Меня беспокоило то, что если я изменю файл конфигурации, это приведет к изменению хеш-файла, поэтому мы не сможем обновить его с помощью clickonce. Я проверю ваш ответ и дам вам знать результаты. Еще раз спасибо.   -  person LittleOne    schedule 23.08.2016
comment
Это сработало? Что-то не так с ответом?   -  person Zesty    schedule 29.08.2016
comment
@Zesty Извините за поздний ответ. Это сработало, но при установке на ПК возникли некоторые проблемы с безопасностью.   -  person LittleOne    schedule 23.03.2017


Ответы (1)


1. Во-первых, разрешите передачу параметров строки запроса в приложение.

введите описание изображения здесь

2. Получите доступ к строке запроса следующим образом

private NameValueCollection GetQueryString()
{
    if (ApplicationDeployment.IsNetworkDeployed)
    {
        try
        {
            string rawQueryString = String.Empty;
            rawQueryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            NameValueCollection queryString;
            try
            {
                queryString = HttpUtility.ParseQueryString(ApplicationDeployment.CurrentDeployment.ActivationUri.Query);
            }
            catch (Exception ex)
            {
                throw new Exception("Unauthorized access!");
            }
            return queryString;
        }
        catch (Exception ex)
        {
            if (ApplicationDeployment.CurrentDeployment == null)
            {
                throw new Exception("Deployment error");
            }
            else if (ApplicationDeployment.CurrentDeployment.ActivationUri == null)
            {
                throw new Exception("Unable to read data");
            }
            else
            {
                throw new Exception("Error with deployment: " + ex.Message);
            }
        }
    }
    else
    {
        throw new Exception("This application may not be accessed directly");
    }
}

3. Обновите app.config

значение изменения App.Config

person Zesty    schedule 23.08.2016