bat脚本实例实现只允许运行一个实例(安装程序、创建快捷方式脚本)

代码如下:

;我的第一个安装脚本
!include "MUI2.nsh"
!define DIR "D:\workspace\nsis\files"

Name "安装程序"
Icon "${DIR}\setup128.ico"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\kaserv"
RequestExecutionLevel admin

!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_LANGUAGE "SimpChinese"

Function .onInit
 System::Call 'kernel32::CreateMutexA(i 0,i 0,t "SMAPLE_MUTEX") i .r1 ?e'
 Pop $R0
 StrCmp $R0 0 +3
 MessageBox MB_OK|MB_ICONSTOP "只允许运行一个实例"
 Abort
FunctionEnd

;安装程序段
Section
SetOutPath $INSTDIR
File "${DIR}\新建文本文档 (2).txt"
File "${DIR}\新建文本文档.txt"
SetOutPath "$INSTDIR\office"
File "${DIR}\office\*"
;快捷方式
CreateShortCut "$DESKTOP\test.lnk" "$INSTDIR\unsetup.exe"
CreateShortCut "$SMPROGRAMS\test.lnk" "$INSTDIR\unsetup.exe"
WriteUninstaller "$INSTDIR\unsetup.exe"
SectionEnd

;卸载程序段
Section "Uninstall"
RMDir /r "$INSTDIR"
Delete "$DESKTOP\test.lnk"
Delete "$SMPROGRAMS\test.lnk"
SectionEnd

(0)

相关推荐

  • C#确保只有一个实例在运行的方法

    本文实例讲述了C#确保只有一个实例在运行的方法.分享给大家供大家参考.具体实现方法如下: public static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName (current.ProcessName); //查找相同名称的进程 foreach (Process process in proc

  • C#简单实现防止多个程序运行的方法

    本文实例讲述了C#简单实现防止多个程序运行的方法.分享给大家供大家参考,具体如下: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess

  • 让应用程序只运行一个实例的实现方法

    在我们的程序当中如果要实现类似<360软件管家>的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例. 对于第一个问题,我们可以通过设置命名互斥对象或命名信标对象,在程序启动的时候检测互斥对象或信标对象,如互斥对象或信标对象已存在,则可以判断此程序已有一个实例正在运行. 第二个问题是如何找到已经运行的应用程序实例,如果我们能够找到已运行实例主窗口的指针,即可调用SetForegroundWindow来激活该实例.我们可以

  • C#判断某程序是否运行的方法

    本文实例讲述了C#判断某程序是否运行的方法,分享给大家供大家参考. 具体实现方法如下: [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImp

  • C#如何防止程序多次运行的技巧

    一.引言 最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9, 所以这里就记录下来,希望给遇到同样问题的朋友有所参考的,同时也是对自己的一个积累.在介绍具体实现代码之前,我们必须明确解决这个问题的思路是什么的?下面只要分享我的一个思考的这个问题的方式: 1.当我们点击一个exe文件时,此时该exe程序将会运行,我们可以看

  • C#编程中设置程序只可被运行一次的方法

    防止程序运行多个实例的方法有多种,如:通过使用互斥量和进程名等.而我想要实现的是:在程序运行多个实例时激活的是第一个实例,使其获得焦点,并在前端显示. 主要用到两个API 函数: ShowWindowAsync 该函数设置由不同线程产生的窗口的显示状态. SetForegroundWindow 该函数将创建指定窗口的线程设置到前台,并且激活该窗口.键盘输入转向该窗口,并为用户改各种可视的记号.系统给创建前台窗口的线程分配的权限稍高于其他线程. 代码如下: 引用以下命名空间: using Syst

  • C#运行时相互关系浅析

    本文主要讲述运行时类型.对象.线程栈和托管堆之间的相互关系,静态方法.实例方法和虚方法的区别,以及内存的分配和回收. 线程栈:在一个进程中可能包含多个线程,一个线程在创建的时候,会分配到一个大小1MB大小的栈,栈用于存储方法的实参.形参以及方法内部的局部变量,栈是从高位内存地址向地位地址构建的,由于栈有先进后出的特点,所以先定义的变量后被回收. 下面来看一个简单的例子,让你更了解线程栈 由于线程栈是从高位开始分配内存,先分配的我就画在上面了,在调用F1();方法时,分配内存的顺序是:name->

  • C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码

    我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错. 为了更便于使用,笔者整理了一段自己用的代码,可以判断程序是否在运行,只运行一个实例,而且能实现当程序在运行时,再去双击程序图标,直接呼出已经运行的程序. 下面看代码,只需在程序的入口文件中加如下代码即可: static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] s

  • 解决C#程序只允许运行一个实例的几种方法详解

    本文和大家讲一下如何使用C#来创建系统中只能有该程序的一个实例运行.要实现程序的互斥,通常有下面几种方式,下面用 C# 语言来实现:方法一:使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例.把program.cs文件里的Main()函数改为如下代码: 复制代码 代码如下: using System;using System.Windows.Forms;using System.Runtime.InteropServices;namespace NetTools{    static cl

  • bat脚本实例实现只允许运行一个实例(安装程序、创建快捷方式脚本)

    复制代码 代码如下: ;我的第一个安装脚本!include "MUI2.nsh"!define DIR "D:\workspace\nsis\files" Name "安装程序"Icon "${DIR}\setup128.ico"OutFile "setup.exe"InstallDir "$PROGRAMFILES\kaserv"RequestExecutionLevel admin

  • 如何用java程序(JSch)运行远程linux主机上的shell脚本

    运行远程主机上的shell脚本 下面的例子是教给大家如何通过java程序,运行远程主机上的shell脚本.(我讲的不是一个黑客学习教程,而是使用用户名密码去执行有用户认证资格的主机上的shell脚本).并且通过java程序获得shell脚本的输出. 首先通过maven坐标引入JSch依赖库,我们正是通过JSch去执行远程主机上的脚本. <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch<

  • 在IntelliJ IDEA中创建和运行java/scala/spark程序的方法

    本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介绍 IntelliJ IDEA 本文使用版本为: ideaIC-2020.1 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境.IntelliJ在业界被公认为最好的java开发工具,它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等,免费版只支持Jav

  • Python实现保证只能运行一个脚本实例

    保证只能运行一个脚本实例,方法是程序运行时监听一个特定端口,如果失败则说明已经有实例在跑. 使用装饰器实现,便于重用 复制代码 代码如下: import functools def just_one_instance(func): ''' 装饰器 如果已经有实例在跑则退出 复制代码 代码如下: :return: '''     @functools.wraps(func)     def f(*args,**kwargs):         import socket         try:

  • java生成jar包并且单进程运行的实例

    java文件打包jar运行 有效步骤: 1.cmd 到当前目录(默认包主类所在目录为例) set classpath = 默认包主类所在目录 2.javac 主类名.java 3.java 主类名 4.写清单文件 Manifest-Version: 1.0 Created-By: 1.8.0 (Sun Microsystems Inc.) Main-Class: 主类名 created-by 版本号 不知道 -> 进cmd 输入java -version 5.jar cfm 自定义.jar MA

  • python脚本监控logstash进程并邮件告警实例

    supervisor虽然也能拉起来logstash进程,但是有时候supervisor也会挂,也有时会拉不起,就算拉起来了也没有邮件告警功能 ,所以编写一个python脚本监控所有服务器,以下代码只列举了一台服务器,需要更多服务器在列表里面添加就行! (日志采集过程中连续几天数据异常,由于服务器太多,当时不太想一一去将近40台服务器查看logstash进程,但又一直查不出原因,后来就每台服务器查看logstash进程,果然发现3台采集搜索日志的logstash进程没了,然后就编写了此脚本监控,效

随机推荐