1. 程式人生 > >NSIS 安裝包確保只能有一個安裝例項執行

NSIS 安裝包確保只能有一個安裝例項執行

1、安裝程式只允許有一個執行

Function .onInit
        InitPluginsDir
            call hasinited
            ;建立互斥防止重複執行
            System::Call 'kernel32::CreateMutexA(i 0, i 0, t"Winsnap_installer") i .r1 ?e'
            Pop $R0
            StrCmp $R0 0 +3
                MessageBox MB_OK|MB_ICONEXCLAMATION "有一個安裝嚮導已經執行!"
                Abort
        FunctionEnd


2、解除安裝程式時檢測程式是否正在執行

Function un.onInit
                MessageBox MB_ICONQUESTION|MB_YESH0|MB_DEFBUTTON2"您確定要完全刪除$(^Name),及其所有的元件?"IDVES +2
                Abort
                FindProcDLL::FindProc "21ATCloud.exe"
                Pop $R0
                IntCmp $R0 1 0 no_run
                       MessageBox MB_ICONSTOP"解除安裝程式檢測到${PRODUCT_NAME}正在執行,請關閉之後再解除安裝!";
                Quit
                no_run;
            FunctionEnd