InnoSetup 脚本打包及管理员权限设置

2023-10-27

InnoSetup使用教程:InnoSetup打包安装

脚本详细

1. 定义变量

1 #define MyAppName "TranslationTool"
2 #define MyAppChineseName "翻译工具"
3 #define MyAppVersion "1.0"
4 #define MyAppPublisher "dotnetschool"
5 #define MyAppURL "https://dotnet-campus.github.io/"
6 #define MyAppExeName "TranslationTool.exe"

2. 初始化安装包设置

 1 [Setup]
 2 ; NOTE: The value of AppId uniquely identifies this application.
 3 ; Do not use the same AppId value in installers for other applications.
 4 ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
 5 AppId={{AEDA7675-70DC-479E-B796-344517C2C954}
 6 AppName={#MyAppName}
 7 AppVersion={#MyAppVersion}
 8 ;AppVerName={#MyAppName} {#MyAppVersion}
 9 AppPublisher={#MyAppPublisher}
10 AppPublisherURL={#MyAppURL}
11 AppSupportURL={#MyAppURL}
12 AppUpdatesURL={#MyAppURL}
13 DefaultDirName={pf}\{#MyAppName}
14 DefaultGroupName={#MyAppChineseName}
15 OutputDir=C:\Users\10167\Desktop
16 OutputBaseFilename={#MyAppChineseName}
17 SetupIconFile=F:\GitHub\TranslationApiDemo\TranslationTool\TranslationTool\Images\bitbug_favicon.ico
18 Compression=lzma
19 SolidCompression=yes

其中,

  • AppId 程序标识
  • AppName 程序名称
  • AppVersion 版本号。生成默认版本号AppName+AppVersion
  • AppVerName 程序版本号。如果设置了AppVersion,则AppVerName会覆盖AppVersion值。
  • AppPublisher 发布者
  • AppPublisherURL、AppSupportURL、AppUpdatesURL 相关链接
  • DefaultDirName 默认安装目录
  • DefaultGroupName 默认开始菜单目录名
  • OutputDir 打包exe的生成目录,比如可以设置在桌面
  • OutputBaseFilename 打包exe的文件名称
  • SetupIconFile 设置打包exe的图标
  • Compression、SolidCompression 压缩相关

3. 启动文件和程序所有文件

1 [Files]
2 Source: "F:\GitHub\TranslationApiDemo\TranslationTool\TranslationTool\bin\Debug\TranslationTool.exe"; DestDir: "{app}"; Flags: ignoreversion
3 Source: "F:\GitHub\TranslationApiDemo\TranslationTool\TranslationTool\bin\Debug\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
4 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files

4. 图标

1 [Icons]
2 Name: "{group}\{#MyAppChineseName}"; Filename: "{app}\{#MyAppExeName}"
3 Name: "{group}\{cm:UninstallProgram,{#MyAppChineseName}}"; Filename: "{uninstallexe}"
4 Name: "{commondesktop}\{#MyAppChineseName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

从上而下,分别是开始菜单中的启动快捷方式、开始菜单中的卸载快捷方式、桌面快捷方式

5. 直接启动

1 [Run]
2 Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppChineseName}}";Flags: nowait postinstall skipifsilent

在完成安装后,可以选择直接启动。

6. 添加Pascal代码

以上都只是innosetup提供的配置,如果需要定制注册表、卸载其它软件、定制界面、用户环境等,可以通过innosetup提供的一些事件来处理。如:

1 [code]
2 function InitializeSetup (): Boolean; 
3 begin
4    MsgBox('程序安装!', mbInformation, MB_OK);
5    Result := true;     
6 end; 

 

此处只介绍一些常用的字段参数,详细的可参考其它博客:https://blog.csdn.net/yiyihuazi/article/details/60323746https://www.cnblogs.com/langtianya/p/4285570.html

案例脚本:

 1 ; Script generated by the Inno Setup Script Wizard.
 2 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 3 
 4 #define MyAppName "TranslationTool"
 5 #define MyAppChineseName "翻译工具"
 6 #define MyAppVersion "1.0"
 7 #define MyAppPublisher "dotnetschool"
 8 #define MyAppURL "https://dotnet-campus.github.io/"
 9 #define MyAppExeName "TranslationTool.exe"
10 
11 [Setup]
12 ; NOTE: The value of AppId uniquely identifies this application.
13 ; Do not use the same AppId value in installers for other applications.
14 ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
15 AppId={{AEDA7675-70DC-479E-B796-344517C2C954}
16 AppName={#MyAppName}
17 AppVersion={#MyAppVersion}
18 ;AppVerName={#MyAppName} {#MyAppVersion}
19 AppPublisher={#MyAppPublisher}
20 AppPublisherURL={#MyAppURL}
21 AppSupportURL={#MyAppURL}
22 AppUpdatesURL={#MyAppURL}
23 DefaultDirName={pf}\{#MyAppName}
24 DefaultGroupName={#MyAppChineseName}
25 OutputDir=C:\Users\10167\Desktop
26 OutputBaseFilename={#MyAppChineseName}
27 SetupIconFile=F:\GitHub\TranslationApiDemo\TranslationTool\TranslationTool\Images\bitbug_favicon.ico
28 Compression=lzma
29 SolidCompression=yes
30 
31 [Languages]
32 Name: "english"; MessagesFile: "compiler:Default.isl"
33 
34 [Tasks]
35 Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
36 
37 [Files]
38 Source: "F:\GitHub\TranslationApiDemo\TranslationTool\TranslationTool\bin\Debug\TranslationTool.exe"; DestDir: "{app}"; Flags: ignoreversion
39 Source: "F:\GitHub\TranslationApiDemo\TranslationTool\TranslationTool\bin\Debug\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
40 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
41 
42 [Icons]
43 Name: "{group}\{#MyAppChineseName}"; Filename: "{app}\{#MyAppExeName}"
44 Name: "{group}\{cm:UninstallProgram,{#MyAppChineseName}}"; Filename: "{uninstallexe}"
45 Name: "{commondesktop}\{#MyAppChineseName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
46 
47 [Run]
48 Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppChineseName}}";Flags: nowait postinstall skipifsilent
View Code

 

 设置安装包以管理员权限运行

如果安装包需要以管理员运行,在VS中设置程序以管理员权限启动之后,

在InnoSetup安装目录下,找到配置SetupLdr.e32文件,设置Manifest中的权限启动参数(与VisualStudio类似),操作如下:

下载Resource Hacker编译器,然后打开.e32文件,将其中权限相关参数,修改为管理员权限。

详细操作可参考:用inno setup制作管理员权限启动的安装包

案例截图

生成的安装包exe以及安装后桌面快捷方式

开始菜单中的快捷方式

 

转载于:https://www.cnblogs.com/kybs0/p/9891310.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

InnoSetup 脚本打包及管理员权限设置 的相关文章

  • 详解C语言中的stdin,stdout,stderr

    我们在写C程序时经常遇到printf fprintf perror 这些东西到底有什么作用 说到这不得不提及stdin stdout stderr 想想 我们在用C去写文件时的操作 File fp fopen 这个fp就是我们向系统申请的
  • android浏览网页,Android学习之通过Intent实现浏览网页

    大家好 在这里和大家分享我刚刚学到的知识 通过Intent打开网页 首先 打开布局文件中main xml 创建为LinearLayout布局 并且创建一个EditText和Button控件 具体代码如下 android orientatio
  • Jmockit 静态方法mock

    类中存在刷新 初始化等静态方法时 编写单元测试案例 示例 被测试类 public class MethodClass public static void refresh init
  • 智能合约编写之Solidity的设计模式

    前 言 随着区块链技术发展 越来越多的企业与个人开始将区块链与自身业务相结合 区块链所具有的独特优势 例如 数据公开透明 不可篡改 可以为业务带来便利 但与此同时 也存在一些隐患 数据的公开透明 意味着任何人都可以读取 不可篡改 意味着信息
  • 【新手向】如何在npm上发布属于自己的包

    课程内容来自黑马程序员的网课 供博主自己检索知识和复习用 当然如果能帮助到你就更好了 作为一个程序员 你一定下载过各式各样的包来自己的项目实现更多功能 但是如何自己发布包呢 建立属于自己的包 第一步 你需要建立一个包 建立包很简单 只要满足
  • 数据科学与大数据分析之项目2-聚类

    聚类 项目介绍 项目开始 项目介绍 文件TreeDB csv包含258个树种的描述 数据由XX市议会开放空间和环境服务部管理处提供 已提供数据集作为公共空间最佳树木选择合作项目的一部分 假设你是该项目团队的一员 进一步假设你决定参与聚类分析
  • java image 透明_Java 生成半透明照片

    在许多实际运用中 我们常常需要将一张照片 图片 装换成半透明后再显示或保存 下面我们就来看看如何使用Java来生成 转换一张照片到半透明 1 基本思路 1 打开一张图片 BufferedImage imageOpen ImageIO rea
  • php密码输入密码,php打开页面输入密码的代码

    直接复制以下代码到模板 文件或者PHP文件 当打开页面时就得输入密码 写模板内容页时候也可以试用 把密码部分当做变量对应后台写入即可 更多功能自己想象
  • ubuntu下 jupyter登录上了 新建python3连接失败

    近期在使用anaconda jupyter的时候发现自己在新建jupyter文件的时候一直报连接错误 所以为了解决此问题做了如下两种方法 第一步 pip uninstall tornado pip install tornado 5 1 1
  • (四)Vue和React的编码方式对比----样式处理及样式污染

    经过3篇文章后我们可以编写一些简单的HTML结构并渲染只页面 可是前端重要的是什么 是样式 前端是给用户看的 所以样式处理也是很重要的一件事 如果一个前端静态效果都写不好 那多丢人 所以本篇介绍一下React和Vue的样式处理方式 以及一个
  • JS —— js中的节流与防抖

    文章目录 前言 一 节流 1 什么是节流 2 做节流可解决什么问题 3 如何做节流 二 防抖 1 什么是防抖 2 做防抖可解决什么问题 3 如何做防抖 总结 前言 最近有同学问到节流与防抖的相关知识点 于是乎 四处查资料 找一找 看一看 终
  • vuepress项目部署出现样式丢失,图片加载失败的问题

    之前在尝试部署vuepress项目时 出现了样式丢失 图片加载失败的问题 具体情况请继续往下看 本地测试 完全正常 在本地测试时的样式都是正常显示的 GitHub部署 样式丢失 打包部署到GitHub上时 布局和样式就完全乱了 同时还有一堆
  • 10、docker 安装 tomcat

    一 docker 环境下安装中间件总体步骤 搜索镜像 拉取镜像 查看镜像 启动镜像 服务端口映射 但其实 docker run 的时候 就会帮我们去配置的 registry 拉取镜像了 也就是 搜索镜像 这一步 其实是可有可无的 二 安装
  • Form 表单内有多个元素的使用方式

    产品中常有的一个需求 输入框后面有描述文案或其他组件 我们可能这样写
  • Java进阶:用案例源码解析EventLoopGroup,面试真题解析

    一 前言 有句话 正因为你优秀 所以难以卓越 刚开始听这句话还在上学 既不卓越 也不优秀 甚至可能还有点笨 但突然从某次爬到班级的前几名后 开始喜欢上了这种感觉 原来前面的风景是如此灿烂 优秀和卓越差的不是一个等级 当你感觉自己优秀后 还能
  • 6-机器学习启蒙- 深度学习: 图像搜索

    6 深度学习 图像搜索 github https github com mtianyan graphLabStartedML 深度学习 图像搜索 基于图片的相似度来选购商品 可视化商品推荐 我想买双新鞋 但是 mark 符合我的风格 我又感
  • openssl 1.0.2d安装使用教程

    本文简要介绍CA和证书的基础知识 并演示openssl 1 0 2d的安装 CA证书生成 用户证书申请 使用CA签发用户证书等内容 另外 可以参考本人的其他文章如nginx教程 进行生成证书的验证 By 泪痕之木 实验环境 操作系统 Cen
  • 彻底解决小程序内嵌web-view缓存问题

    前言 项目是通过web view内嵌在小程序里的vue单页应用 然而前几天发现明明发布了代码 在小程序入口进去看到的还是旧页面 尝试了各种操作 手动退出小程序 再次进入 删除 发现 小程序 重新进入 关闭微信 杀掉进程 重新进入 修改 Ng
  • R语言【基本计数原理与技巧——阶乘、组合、排列】

    加法原理定义 做一件事有n种方法 第一类有 m 1 m 1 m1 种方法 第二类有 m 2 m 2
  • AM335X外部看门狗及LINUX系统驱动移植(二)

    看门狗定时器 WDT Watch Dog Timer 是嵌入式系统的的一个组成部分 它实际上是一个计数器 一般给看门狗设置复位时间间隔 程序开始运行后看门狗开始计数 如果程序运行正常 过一段时间CPU应发出指令让看门狗置零 重新开始计数 如

随机推荐

  • python打砖块游戏算法设计分析_Python打砖块

    在家闲来无事用Python写了一个打砖块游戏 目前完成度一般 先来段视频 声音有点大 演示https www zhihu com video 1235510400411369472 游戏主要分那么几个板块 小球Ball 挡板Paddle 砖
  • ECS突发性能T6服务器可以用来做哪些事情?

    能做的事情还是挺多的 一般比如个人建站 WordPress建站 小微企业建站 小程序搭建 web开发部署等各种项目基本都是可以的 不过这类入门的就不太时候大型项目了 比如大型电商网站 比如人工智能 机器学习等就不要用突发型实例了 一般的小网
  • 利用maven-war-plugin实现不同环境下的配置文件

    我这是一个标准的maven的目录结构 配置文件都在src main resources根目录下 因为要改成多环境的配置 所以只有properties的文件改变了 公共配置可以原地不动 1 将配置文件放到不同的文件夹下 2 创建2个不同的pr
  • 默认值约束 [MySQL][数据库]

    默认值约束 DEFAULT 默认值约束的作用 给某个字段 某列指定默认值 一旦我们设置了默认值约束之后 在插入数据时 如果此字段没有显式赋值 则赋值为默认值 如果我们没有给一个字段添加默认值约束 这个时候我们如果没给一个字段显式赋值 那么这
  • Android编译之lunch命令

    google官方给的编译步骤 官方的详细编译步骤见 http source android com source building html 按照google给出的编译步骤如下 source build envsetup sh 加载命令 这
  • 巨头刷脸补贴大战自伊始就没有停止过

    随 着5G时代的到来 互联网 AI智能 云计算 物联网等技术的成熟 中国财政科学研究院应用学博士后盘和林认为 刷脸支付比密码支付更安全更便捷 我国在移动支付领域相较于其他国家来说一直处于领先地位 支付宝和微信支付两家在这一领域的竞争就从来没
  • QT笔记之QSpinBox和QSlider的封装使用

    文章目录 1 创建QT测试工程 2 右键添加 新建项 3 添加新的Qt Widget Class 叫做MySpinBox Slider QSpinBox和QSlider的组合使用 4 添加好QSpinBox和QSlider两个控件 并且调整
  • 牛顿第二定律沿流线流动粒子 Python 分析(流体力学)

    当流体粒子从一个位置移动到另一个位置时 它通常会经历加速或减速 根据牛顿第二运动定律 作用在所考虑的流体粒子上的合力 必须等于其质量乘以其加速度 F m a mathbf F m mathbf a F ma 实际上 不存在无粘
  • 微信第三方平台的授权过程整理

    最近碰到微信第三方平台这个东西 就研究了下 由于微信官方文档顺序不是很明确 我特别也整理了一下 官方的概述是 公众平台第三方平台是为了让公众号或小程序运营者 在面向垂直行业需求时 可以一键授权给第三方平台 并且可以同时授权给多家第三方 通过
  • Android基础进阶 - 消息机制 之Native层分析,Android面试回忆录

    synchronized this msg markInUse msg when when Message p mMessages boolean needWake 如果消息链表为空 或者插入的Message比消息链表第一个消息要执行的更早
  • Mockito框架@Mock, @InjectMocks注解使用

    最近写项目Junit 使用Junit4框架 测试的数据都要依赖数据库 而好多接口需要调其他的系统 junit4框架完全无法实现测试功能 大佬推荐用Mockito框架 这篇博客用来记录学习Mockito的使用方法 不足欢迎指点 Mock In
  • Dump文件的生成和使用

    1 简介 第一次遇到程序崩溃的问题 之前为单位开发了一个插件程序 在本机运行没有出现问题 但把生成的可执行文件拷贝到服务器上一运行程序 刚进入插件代码 插件服务就崩溃了 当时被这个问题整的很惨 在同事的帮助下了解到 对于程序崩溃 最快的解决
  • qemu图形界面linux,QEMU 简单几步搭建一个虚拟的ARM开发板

    1 安装QEMU 先在Ubuntu中安装QEMU sudo apt get install qemu 1 安装几个QEMU需要的软件包 sudo apt get install zlib1g dev sudo apt get install
  • 在Windows中使用WSL和VS Code搭建出友好的终端开发环境

    使用WSL Windows Subsystem for Linux 这一适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU Linux 环境 包括大多数命令行工具 实用工具和应用程序 且不会产生传统虚拟机或双启动设
  • 平面几何-python

    三角形面积 题目描述 平面直角坐标系中有一个三角形 请你求出它的面积 输入描述 第一行输入一个 TT 代表测试数据量 每组测试数据输入有三行 每行一个实数坐标 x y x y 代表三角形三个顶点 1 T 10 3 10 5 x y 10 5
  • 2018年LeetCode高频算法面试题刷题笔记——验证回文串(字符串)

    1 解答之前的碎碎念 这个题还蛮简单的 大概就是考研机试第一题的水平 所以就不写解法了 2 问题描述 给定一个字符串 验证它是否是回文串 只考虑字母和数字字符 可以忽略字母的大小写 说明 本题中 我们将空字符串定义为有效的回文串 示例 1
  • 自媒体账号ID应该怎么取?

    我们都知道 在做自媒体之前 我们需要注册自媒体账号 这时候我们需要给账号取一个名称 一个好的名称能让你吸取更多的粉丝 让读者记忆深刻 取名规范各平台的规则都差不多 所以在入驻平台之前一定要先认真看清各平台名称规范 防止因为名称不规范而不能通
  • 鹏仔暴力刷导航网页排行榜HTML模板,网站如何测压

    现在很多站长都做了导航站 大多数导航站都有网站排行榜 也就是今日浏览榜 月最高浏览榜 总浏览榜等 你页面阅读量越高 那么排名越靠前 曝光的几率就更高 很多站长在某些导航站提交完收录后 手动刷新增加阅读量 真的特别慢 那么本次鹏仔就给大家简单
  • 头文件路径包含问题

    头文件包含两种 系统头文件和自定义头文件 系统头文件不说了 格式统一 自定义头文件在包含的时候要注意路径 其实是头文件与主文件的相对位置关系的问题 ps 另外 LInux和Windows下也有所区别 举4个例子 应该就能看明白了 一 这种情
  • InnoSetup 脚本打包及管理员权限设置

    InnoSetup使用教程 InnoSetup打包安装 脚本详细 1 定义变量 1 define MyAppName TranslationTool 2 define MyAppChineseName 翻译工具 3 define MyApp