似乎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 Setup的脚本,我只是有:
AppMutex=Loader
但是安装可能,如果还跑应用正在运行。
我也试图检查是否真有互斥体,所以用进程管理器我找了应用处理器和我得到这个:
AppMutex=Loader
Mutant \BaseNamedObjects\Loader
我错过了什么?
我想说你在'AppMutex'指令val中缺少'Global \'作用域前缀UE。我怀疑没有这个前缀会在全局命名空间中创建互斥锁。所以我宁愿使用'AppMutex = Global \ Loader'。 – TLama
这就是答案!请回答,以便我可以接受您的解决方案。谢谢 – Tobia