Для первой части вы можете использовать toLowerCase()
if(res.toLowerCase().search('em') != -1)
Вы можете использовать чередование в регулярных выражениях вместе с нечувствительным к регистру флагом.
/(em|vh|px)/i
Mathces em
или vh
или px
.
function replaceUnit(input){
return input.replace(/(em|px|vh)/i ,'replaced')
}
console.log(replaceUnit('height: 20em'))
console.log(replaceUnit('width:=20Em'))
console.log(replaceUnit('border-radius: 2Px'))
console.log(replaceUnit('unit=pX'))
console.log(replaceUnit('max-height=20Vh'))
Почему не делают Вас FIX установщик или независимо от того, что проблемы происходят, а не пытаются сделать некоторый взлом для предотвращения его...
Просто мои.02$
Имейте свое место установщика файл в папке приложений.
Когда выполнения снова, проверьте на тот файл, если он существует, отобразите "Уже установленное" всплывающее окно и выход.
Принятие этого является вопросом VB6, можно использовать созданный в Приложении. PrevInstance.
Документация: http://msdn.microsoft.com/en-us/library/aa268085 (по сравнению с 60) .aspx
Приложение. Previnstance возвращает True, если Ваше приложение уже работает.
В Вашем событии загрузки Формы Запуска или Вашем Основном Sub:
Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "Already running"
'Do whatever you need to do before closing
End If
End Sub
Если Вы хотите пойти один шаг вперед и принести предыдущий экземпляр к переднему плану, можно проверить эти статьи:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=21131&lngWId=1
У Вас мог быть EXE-файл установщика, удаляют себя, хорошо не непосредственно, в то время как он работает, но выдайте вызов к другому сервису для удаления его после того, как он сделал выполнение.
Я думал, что это было интересно, таким образом, я Погуглил его, походит на некоторую хорошую информацию об этом сообщении:
При использовании .NET затем, Взаимное исключение является другом здесь.
Никогда не используйте Процесс. Метод GetProcessesByName. Вы будете только ненавидеть себя позже за использование чего-то, что требует Администраторских полномочий
private bool CanIStart
{
try
{
MyAppMutex= new Mutex(false, "myAppMutex", out createdNew);
if(MyAppMutex.WaitOne(0,false))
{
return true;
}
else
{
MyAppMutex = null;
return false;
}
}
catch(ApplicationException ex)
{
// we couldn't create the mutex. // log the error if you care
return false;
}
}
Имейте установщик, создают ключ реестра. Откажитесь устанавливать (снова), если ключ реестра уже существует.
Точно, как достигнуть, это будет зависеть от технологии установщика, которую Вы используете.
На приложении установщика
' Test eventual mark, settings in the registry.
if GetSetting("MyInstallerApp","Startup","BeenHere",0) = 1 then
MsgBox "This installer was ran once already... first run the un-installer."
End ' or some other code to properly exit the installer
EndIf
Call SaveSetting ("MyInstallerApp","Startup", "BeenHere", 1) 'leave a mark for future
На приложении деинсталлятора (или опция "удаления" установщика)
' Allow future Installer to run again
Call DeleteSetting("MyInstallerApp", "Startup")
При использовании VB.NET с Visual Studio 2005 или 2008, можно проверить опцию 'Make Single Instance Application' в раздел Windows Application Framework вкладки Application в настройках проекта.
Возможно, проверка рабочих процессов на машине, чтобы сказать Вам, если другой экземпляр существует, помогла бы? Посмотрите этот поток для большего количества информации...
Это ударяет меня, что отъезд приложения вокруг этого не должен быть выполнен, несколько раз похож на отъезд большой красной кнопки где-нибудь в чьем-то столе, что когда продвинутые аварийные завершения стол.Неприятно.
Большинство установщиков имеет функцию для не предложения повторной установки. Проверьте, что сначала - который походит на лучшее, самое очевидное решение.
Что сильно испорчено? Как запуск является установщиком во второй раз, отличающийся от выполнения его первое с точки зрения Вашего приложения? Это должно быть обращено в Вашем коде также.
Вы могли проверить и видеть, существуют ли установленные файлы приложения уже. Принятие то есть, Вы знаете, где приложение было установлено к.