/// <summary> /// Check for locked ICU files and return /// </summary> /// <param name="localPath">the locale being modified. May just be the ICULocale name, or /// may be a fully specified path name to the language xml file, or null.</param> /// <param name="runSilent">Boolean set to true if we don't want to ask the user for info. /// <returns>true if ok to continue, or false if files are locked</returns> private static bool CheckForIcuLocked(string inputLocale, bool runSilent, CallingID caller) { bool fOk; string locale = null; if (inputLocale != null) { int icuName = inputLocale.LastIndexOf("\\"); string icuPortion = inputLocale.Substring(icuName + 1); int iLocale = icuPortion.LastIndexOf("."); if (iLocale < 0) { iLocale = icuPortion.Length; } locale = icuPortion.Substring(0, iLocale); } do { fOk = true; string lockedFile = Icu.CheckIcuLocked(locale); if (lockedFile != null) { LogFile.AddLine(" File Access Error: " + lockedFile + ". Asking user to Retry or Cancel. Caller=" + caller.ToString()); if (runSilent) { LogFile.AddLine(" Silently cancelled operation."); System.Console.WriteLine("Silently cancelled operation."); return(false); } string message = ""; // for now string nl = Environment.NewLine; switch (caller) { case CallingID.CID_RESTORE: message = String.Format(InstallLanguageStrings.ksRestore_CloseOtherFWApps, lockedFile); break; case CallingID.CID_NEW: message = String.Format(InstallLanguageStrings.ksNew_CloseOtherFWApps, locale, lockedFile); break; case CallingID.CID_INSTALL: case CallingID.CID_REMOVE: case CallingID.CID_UNKNOWN: case CallingID.CID_UPDATE: default: message = String.Format(InstallLanguageStrings.ksUpdate_CloseOtherFWApps, locale, lockedFile); break; } message = message + nl + nl + InstallLanguageStrings.ksCloseClipboardConverter + nl + nl + InstallLanguageStrings.ksCloseThisFWApp; string caption = InstallLanguageStrings.ksInstallLanguageMsgCaption; MessageBoxButtons buttons = MessageBoxButtons.RetryCancel; MessageBoxIcon icon = MessageBoxIcon.Exclamation; MessageBoxDefaultButton defButton = MessageBoxDefaultButton.Button1; DialogResult result = MessageBox.Show(message, caption, buttons, icon, defButton); if (result == DialogResult.Cancel) { LogFile.AddLine(" User cancelled operation."); System.Console.WriteLine("User cancelled operation."); return(false); } else { fOk = false; } } } while (fOk == false); return(true); }