Кажется, что директива AppMutex
не работает для моего сценария установки. Я следую этой статьи: http://www.jmedved.com/2012/06/mutex-for-innosetup/AppMutex не работает на Inno Setup
Это мой C# код моего приложения:
private static string appGuid = "Loader";
...
bool createdNew;
var mutexSec = new MutexSecurity();
mutexSec.AddAccessRule(
new MutexAccessRule(
new SecurityIdentifier(WellKnownSidType.WorldSid, null),
MutexRights.FullControl, AccessControlType.Allow));
using (var setupMutex = new Mutex(false, @"Global\"+appGuid, out createdNew, mutexSec))
{
if (!createdNew)
{
MessageBox.Show(
"Application already running.", "Loader", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Loader(args));
}
В Inno сценарии установки я просто:
AppMutex=Loader
Однако программа установки может работать также, если приложение работает.
Я также попытался проверить, если там действительно был мьютекс, так и с Process Explorer я искал обработчиков приложений и я получаю это:
AppMutex=Loader
Mutant \BaseNamedObjects\Loader
Что я пропустил?
Я бы сказал, что вам не хватает префикса 'Global \' в вашей директиве 'AppMutex' v ALUE. Я сомневаюсь, что без этого префикса будут созданы мьютексы в глобальном пространстве имен. Поэтому я предпочел бы использовать «AppMutex = Global \ Loader». – TLama
Это ответ! ответьте, поэтому я могу принять ваше решение. благодаря – Tobia