Сохранить изменяемые данные в С# exe

Я разрабатываю небольшой проект на С#. Я использовал costura-fody для встраивания всех зависимостей в исполняемый файл. Я также хочу встроить в приложение некоторый изменяемый контент (некоторые настройки). Так что моя программа будет полностью переносимой.

Что, по моему мнению, может сработать:

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

Проблема:

Я не знаю, как это сделать. Я не знаю, как я могу сохранить настройки в существующем exe. Я знаю, что это возможно (возможно, с другим подходом), потому что я видел, как это делает программа. SelfNote делает это

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


person mrid    schedule 20.12.2017    source источник
comment
Это ужасная идея.   -  person erikvimz    schedule 20.12.2017
comment
Звучит как ужасная идея, но я думаю, Альтернативные потоки данных (ADS) будет работать на что-то подобное.   -  person Manfred Radlwimmer    schedule 20.12.2017
comment
Недостатком здесь является идея распространять программное обеспечение в виде одного исполняемого файла. Распространяйте его как exe-файл плюс файл настроек, и все в порядке. Программное обеспечение Portable представляет собой скорее пакет, чем один исполняемый файл.   -  person Sinatr    schedule 20.12.2017
comment
@ Эрик Я знаю, что exe неизменяем. Но я хочу знать, как с этим справляется SelfNote.   -  person mrid    schedule 20.12.2017
comment
Раньше я работал в компании, где у одного из продуктов был установщик, который мог загрузить и установить новую версию указанного продукта. После первоначальной установки продукт будет регулярно проверять наличие обновлений (на основе таймера), и если будет доступно обновление, он запустит программу установки и завершит работу. Затем установщик загрузит новую версию и активирует ее. Я не писал установщик, поэтому понятия не имею, как это было сделано, просто это возможно даже на компактной версии .net 3.5.   -  person Zohar Peled    schedule 20.12.2017
comment
@ManfredRadlwimmer ADS будет работать нормально, пока программа находится в определенном каталоге в системе. Это не сработает, если я перенесу exe в другую систему   -  person mrid    schedule 20.12.2017
comment
@mrid О, ты хотел сохранить конфиг при раздаче? Честно говоря, вы должны переосмыслить этот подход. Единственное, что вам нужно, чтобы ваше приложение было переносимым, — это хранить все файлы (dll, настройки, данные и т. д.) в общем каталоге (без %User%, без реестра и т. д.).   -  person Manfred Radlwimmer    schedule 20.12.2017
comment
Нажмите, нажмите должно быть больше.   -  person Sinatr    schedule 20.12.2017