2014-02-21 1 views
0

ввод пользователя сохраняется в файле конфигурации приложения, поскольку при каждом запуске программного обеспечения должен использовать этот вход:Save Config в запуске приложения

public void setAppSetting(string key, string value) 
    { 
     //Laden der AppSettings 
     Configuration config = ConfigurationManager. 
           OpenExeConfiguration(
           System.Reflection.Assembly. 
           GetExecutingAssembly().Location); 

     if (config.AppSettings.Settings[key] != null) 
     { 
      config.AppSettings.Settings.Remove(key); 
     } 

     config.AppSettings.Settings.Add(key, value); 
     config.Save(ConfigurationSaveMode.Modified); 
    } 

    public string getAppSetting(string key) 
    { 

     Configuration config = ConfigurationManager. 
           OpenExeConfiguration(
           System.Reflection.Assembly. 
           GetExecutingAssembly().Location); 

     return config.AppSettings.Settings[key].Value; 
    } 

Загрузка настроек приложения:

private void Start_Closed(object sender, EventArgs e) 
    { 

     setAppSetting("benutzerEingabe", textBoxPath.Text); 
     setAppSetting("benutzerEingabe", userConfigurePath); 
    } 

Итак, когда пользователь decrompess zip-файл, где существует exe-файл, есть файл содержимого без содержимого. Поэтому я хочу этого.

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
</configuration> 

После первого использования приложения конфига заполненного ключа:

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
<appSettings> 
    <add key="benutzerEingabe" /> 
</appSettings> 
</configuration> 

Проблема для меня, когда пользователь копирует ЕХ на другое место и начать в первый раз это app есть новый файл конфигурации. Это проблема. Есть ли вероятность, что файл конфигурации будет реализован в exe-файле, чтобы этот файл не создавал сам. Или есть другое решение?

+0

Вы всегда можете проверить, когда приложение запустится, если есть файл app.conf или нет, если он не создан, и если да, то продолжайте. –

+0

Вы можете использовать реестр. Или он может быть сохранен в фиксированных местах для всех пользователей. – Sinatr

+1

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

ответ

1

Что вам нужно - установщик exe или msi package. Вы можете сделать это, создав проект msi в visual studio. С помощью этого метода вместо предоставления exe-файла вы дадите пользователям MSI-файл. Поэтому при установке msi вы можете связать свой exe таким образом, что вы автоматически поместите файл конфигурации. Вы также можете сделать этот установщик для создания папок и т. Д. На пользовательских машинах. Очень полезно.

http://www.codeproject.com/Articles/568476/Creating-an-MSI-Package-for-Csharp-Windows-Applica

http://support.microsoft.com/kb/307353

http://msdn.microsoft.com/en-us/library/cc766795.aspx

+0

У меня есть только Visual Studio Express 2010, поэтому я понял это с помощью clickone: http://www.c-sharpcorner.com/uploadfile/37db1d/deploying-wpf-application-with-clickonce-deployment-techniques/. Ваш отзыв toke me on правильный путь – LittleProgrammer

0

Вы можете загрузить конфигурационный файл вручную с помощью ConfigurationManager.OpenExeConfiguration

Там есть хороший пример над here: он сохраняет эти настройки в движении.

0

Вы можете Offcourse всегда использовать параметры в C# они сделаны для этих вещей. http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

+0

Вы правы, но они не сохраняются при движении. –

+0

При перемещении на том же компьютере они сохраняются. Если вам нужно перейти от одного компьютера к другому, вы можете предвидеть способ экспорта/импорта ваших настроек. В любом случае приложение app.config не предназначено для хранения пользовательских настроек. – woutervs

1

Лучше создать файл в общем месте, каждый раз проверить существование файла в общем месте, и если существует для чтения/записи значения в противном случае создать файл

вы можете использовать XML файл или ini файл для сохранения данных. поэтому, если вы меняете местоположение exe, это не влияет на выполнение.

вы можете использовать

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

в качестве общей папки.

Смежные вопросы