Чтобы определить, выполняется ли приложение, я проверяю файл FirstTime.txt в каталоге исполняемых файлов. Я помещаю этот файл в каталог исполняемых файлов, поскольку знаю, что этот каталог удаляется при удалении. Поэтому, когда приложение повторно развертывается, я уверен, что этого файла не будет, поэтому я буду использовать настройки приложения static для первоначальной настройки моих пользовательских настроек, которые пользователь может изменить через приложение, поскольку они это просто пользовательские настройки.
Я сохраняю эти пользовательские настройки, когда происходит событие form_closing. Даже если у пользователя были предыдущие пользовательские настройки из предыдущего развертывания, зная, что FirstTime.txt отсутствует (таким образом, давая мне знать, что приложение запускается впервые), я уверен, что пользовательские настройки сбросьте настройки статического приложения при первом запуске приложения (если, конечно, пользователь не изменит эти настройки перед закрытием приложения).
В любом случае, вот фрагмент кода, чтобы проверить, было ли приложение уже выполнено:
/// <summary>
/// Check if this is the first time ADDapt has ever executed
/// </summary>
/// <remarks>
/// We know that ADDapt has run before with the existence of FirstTime.txt.
/// </remarks>
/// <returns>
/// False - this was the first time the application executed
/// </returns>
/// <param name="ADDaptBinDirectory">
/// Application base directory
/// </param>
public bool CheckFirstTime(String ADDaptBinDirectory)
{
bool bADDaptRunFirstTime = false;
String FirstTimeFileName = string.Format("{0}//FirstTime.txt", ADDaptBinDirectory);
// Find FirstTime.txt in Bin Directory
if (File.Exists(FirstTimeFileName))
bADDaptRunFirstTime = true;
else
{
// Create FirstTime file
}
return bADDaptRunFirstTime;
}
/// <summary>
/// Create the FirstTime file
/// </summary>
/// <remarks>
/// Saving the creation date in the first time documents when the app was initially executed
/// </remarks>
/// <param name="FirstTimeFN">
/// Full windows file name (Directory and all)
/// </param>
private void CreateFirstTimeFile(String FirstTimeFN)
{
FileInfo fi = new FileInfo(FirstTimeFN);
DateTime dt = DateTime.Now;
using (TextWriter w = fi.CreateText())
{
w.WriteLine(string.Format("Creation Date: {0:g} ", dt));
}
}