Настройки приложения VB.Net / ClickOnce - PullRequest
1 голос
/ 15 марта 2010

VS 2008 / VB.Net / WinForms

У меня есть настройки приложения (Settings.settings) для проекта, и я использую развертывание Click Once.

Я использовал VS Editor, чтобы создать настройку, и я вижу настройку в файле app.config

<applicationSettings>
  <MyApp.Win.My.MySettings>
   <setting name="MySetting" serializeAs="String">
    <value>False</value>
   </setting>
  </MyApp.Win.My.MySettings>
 </applicationSettings>

Я хотел бы обновить этот параметр после того, как приложение будет упаковано в один клик. Настройка только для целей тестирования.

Если я изменю xxx.config.deploy и переустановлю приложение одним щелчком мыши. Новое значение настройки не изменяется (кажется, где-то кешируется). Даже если я изменю свой локальный компьютер, настройки кажутся где-то кэшированными. Если я захожу в VS, он просит меня выполнить повторную синхронизацию настроек. Но мне нужно сделать это после того, как приложение будет упаковано в один клик.

Обновление

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

Уточняющие шаги:

  1. Создание клика после развертывания
  2. Копирование на сервер развертывания клиентов (IIS)
  3. Редактировать файл xxx.config.deploy на сервере
  4. Установка на клиентском ПК (путем установки с сервера развертывания на шаге 2)
  5. Клиентский ПК не имеет обновленной настройки

Спасибо за любую помощь

1 Ответ

0 голосов
/ 16 марта 2010

Интересно. Я бы подумал, что установка не удастся, но я просто попробовал, изменил значение в config.deploy, и установка работает нормально, и, как вы говорите, измененное значение все еще имеет исходное значение.

Когда файлы развертывания созданы, clickonce создает манифест и проверяет, чтобы убедиться, что каждый файл неизменен, если какой-либо файл отличается, установка завершается неудачно.

Похоже, что config.deploy не проверен, поэтому я УГОВОРИЛ, что при создании манифеста он должен записывать содержимое и использовать его при установке клиента.

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

...