c/c++ 软件集成 安装和可卸载软件
时间:2022-05-05
本文章向大家介绍c/c++ 软件集成 安装和可卸载软件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
作为一个工程师应具备的一些能力:
1. 首先具备这款软件:
>inno Setup 免费版还开源,良心货,妥妥的。
2. 这款软件上手也比较款,可自行参考使用文档
3.编译成功,生成代码之后,样子可能如下:
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 "My Program"
5 #define MyAppVersion "beta 1.0"
6 #define MyAppPublisher "精灵球网络科技有限公司, Inc."
7 #define MyAppURL "http://www.cnblogs.com/gongxijun/"
8 #define MyAppExeName "startup.bat"
9
10 [Setup]
11 ; NOTE: The value of AppId uniquely identifies this application.
12 ; Do not use the same AppId value in installers for other applications.
13 ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
14 AppId={{FA1B17D2-4CC5-465E-9A5F-DCA022B6EA1A}
15 AppName={#MyAppName}
16 AppVersion={#MyAppVersion}
17 ;AppVerName={#MyAppName} {#MyAppVersion}
18 AppPublisher={#MyAppPublisher}
19 AppPublisherURL={#MyAppURL}
20 AppSupportURL={#MyAppURL}
21 AppUpdatesURL={#MyAppURL}
22 DefaultDirName={pf}{#MyAppName}
23 DefaultGroupName={#MyAppName}
24 AllowNoIcons=yes
25 OutputDir=D:UsersgxjDesktopTFriend
26 OutputBaseFilename=setup
27 Compression=lzma
28 SolidCompression=yes
29
30 [Languages]
31 Name: "english"; MessagesFile: "compiler:Default.isl"
32 Name: "brazilianportuguese"; MessagesFile: "compiler:LanguagesBrazilianPortuguese.isl"
33 Name: "catalan"; MessagesFile: "compiler:LanguagesCatalan.isl"
34 Name: "corsican"; MessagesFile: "compiler:LanguagesCorsican.isl"
35 Name: "czech"; MessagesFile: "compiler:LanguagesCzech.isl"
36 Name: "danish"; MessagesFile: "compiler:LanguagesDanish.isl"
37 Name: "dutch"; MessagesFile: "compiler:LanguagesDutch.isl"
38 Name: "finnish"; MessagesFile: "compiler:LanguagesFinnish.isl"
39 Name: "french"; MessagesFile: "compiler:LanguagesFrench.isl"
40 Name: "german"; MessagesFile: "compiler:LanguagesGerman.isl"
41 Name: "greek"; MessagesFile: "compiler:LanguagesGreek.isl"
42 Name: "hebrew"; MessagesFile: "compiler:LanguagesHebrew.isl"
43 Name: "hungarian"; MessagesFile: "compiler:LanguagesHungarian.isl"
44 Name: "italian"; MessagesFile: "compiler:LanguagesItalian.isl"
45 Name: "japanese"; MessagesFile: "compiler:LanguagesJapanese.isl"
46 Name: "norwegian"; MessagesFile: "compiler:LanguagesNorwegian.isl"
47 Name: "polish"; MessagesFile: "compiler:LanguagesPolish.isl"
48 Name: "portuguese"; MessagesFile: "compiler:LanguagesPortuguese.isl"
49 Name: "russian"; MessagesFile: "compiler:LanguagesRussian.isl"
50 Name: "scottishgaelic"; MessagesFile: "compiler:LanguagesScottishGaelic.isl"
51 Name: "serbiancyrillic"; MessagesFile: "compiler:LanguagesSerbianCyrillic.isl"
52 Name: "serbianlatin"; MessagesFile: "compiler:LanguagesSerbianLatin.isl"
53 Name: "slovenian"; MessagesFile: "compiler:LanguagesSlovenian.isl"
54 Name: "spanish"; MessagesFile: "compiler:LanguagesSpanish.isl"
55 Name: "turkish"; MessagesFile: "compiler:LanguagesTurkish.isl"
56 Name: "ukrainian"; MessagesFile: "compiler:LanguagesUkrainian.isl"
57
58 [Tasks]
59 Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
60 Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
61
62 [Files]
63 Source: "C:DataTFriendRTKehux64Releasestartup.bat"; DestDir: "{app}"; Flags: ignoreversion
64 Source: "C:DataTFriendRTKehux64Release2005_x64.exe"; DestDir: "{app}"; Flags: ignoreversion
65 Source: "C:DataTFriendRTKehux64Release2008_x64.exe"; DestDir: "{app}"; Flags: ignoreversion
66 Source: "C:DataTFriendRTKehux64Release2010_IA64.exe"; DestDir: "{app}"; Flags: ignoreversion
67 Source: "C:DataTFriendRTKehux64Release2012_x64.exe"; DestDir: "{app}"; Flags: ignoreversion
68 Source: "C:DataTFriendRTKehux64Release2013_x64.exe"; DestDir: "{app}"; Flags: ignoreversion
69 Source: "C:DataTFriendRTKehux64Release2014_x64.exe"; DestDir: "{app}"; Flags: ignoreversion
70 Source: "C:DataTFriendRTKehux64Releasecmd5.obj"; DestDir: "{app}"; Flags: ignoreversion
71 Source: "C:DataTFriendRTKehux64Releaseexplorer1.obj"; DestDir: "{app}"; Flags: ignoreversion
72 Source: "C:DataTFriendRTKehux64ReleaseGetSysInfo.obj"; DestDir: "{app}"; Flags: ignoreversion
73 Source: "C:DataTFriendRTKehux64ReleaseGoodInf.obj"; DestDir: "{app}"; Flags: ignoreversion
74 Source: "C:DataTFriendRTKehux64Releasejietu.obj"; DestDir: "{app}"; Flags: ignoreversion
75 Source: "C:DataTFriendRTKehux64Releasejson_reader.asm"; DestDir: "{app}"; Flags: ignoreversion
76 Source: "C:DataTFriendRTKehux64Releasejson_value.asm"; DestDir: "{app}"; Flags: ignoreversion
77 Source: "C:DataTFriendRTKehux64Releasejson_writer.asm"; DestDir: "{app}"; Flags: ignoreversion
78 Source: "C:DataTFriendRTKehux64ReleaseKehu.Build.CppClean.log"; DestDir: "{app}"; Flags: ignoreversion
79 Source: "C:DataTFriendRTKehux64ReleaseKehu.exe"; DestDir: "{app}"; Flags: ignoreversion
80 Source: "C:DataTFriendRTKehux64ReleaseKehu.log"; DestDir: "{app}"; Flags: ignoreversion
81 Source: "C:DataTFriendRTKehux64ReleaseKehu.obj"; DestDir: "{app}"; Flags: ignoreversion
82 Source: "C:DataTFriendRTKehux64ReleaseKehu.res"; DestDir: "{app}"; Flags: ignoreversion
83 Source: "C:DataTFriendRTKehux64ReleaseKehuDlg.obj"; DestDir: "{app}"; Flags: ignoreversion
84 Source: "C:DataTFriendRTKehux64Releaselibmysql.dll"; DestDir: "{app}"; Flags: ignoreversion
85 Source: "C:DataTFriendRTKehux64ReleaseMainMenu.obj"; DestDir: "{app}"; Flags: ignoreversion
86 Source: "C:DataTFriendRTKehux64ReleaseMyTracker.obj"; DestDir: "{app}"; Flags: ignoreversion
87 Source: "C:DataTFriendRTKehux64ReleaseNews.obj"; DestDir: "{app}"; Flags: ignoreversion
88 Source: "C:DataTFriendRTKehux64ReleaseScreepJieTu.obj"; DestDir: "{app}"; Flags: ignoreversion
89 Source: "C:DataTFriendRTKehux64Releasestartup.bat"; DestDir: "{app}"; Flags: ignoreversion
90 Source: "C:DataTFriendRTKehux64Releasestdafx.obj"; DestDir: "{app}"; Flags: ignoreversion
91 Source: "C:DataTFriendRTKehux64Releasevc120.pdb"; DestDir: "{app}"; Flags: ignoreversion
92 Source: "C:DataTFriendRTKehux64ReleaseWMI_DeviceQuery.obj"; DestDir: "{app}"; Flags: ignoreversion
93 ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
94
95 [Icons]
96 Name: "{group}{#MyAppName}"; Filename: "{app}{#MyAppExeName}"
97 Name: "{group}{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
98 Name: "{group}{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
99 Name: "{commondesktop}{#MyAppName}"; Filename: "{app}{#MyAppExeName}"; Tasks: desktopicon
100 Name: "{userappdata}MicrosoftInternet ExplorerQuick Launch{#MyAppName}"; Filename: "{app}{#MyAppExeName}"; Tasks: quicklaunchicon
101
102 [Run]
103 Filename: "{app}{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: shellexec postinstall skipifsilent
3. 在集成的时候,有时,如果有特殊的条件需要集成运行库,那就得写下如下的批处理文件,并将要集成的运行库下载放到打包文件中,然后参考如下文件:
1 @echo off
2 ::::::查询微软软件当前的注册表
3 set "HKLMU=HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall"
4 reg query %HKLMU%{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 Redistributable X64
5 reg query %HKLMU%{071C9B48-7C32-4621-A0AC-3F809523288F}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable X64
6 reg query %HKLMU%{6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update X64
7 reg query %HKLMU%{03ED71EA-F531-4927-AABD-1C31BCE8E187}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 Redistributable IA64
8 reg query %HKLMU%{0F8FB34E-675E-42ED-850B-29D98C2ECE08}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable IA64
9 reg query %HKLMU%{85025851-A784-46D8-950D-05CB3CA43A13}>nul 2>nul&&set VC2005=Microsoft Visual C++ 2005 SP1 Redistributable ATL Security Update IA64
10
11 if defined VC2005 (echo %VC2005% 已安装!&ping -n 5 127.1>nul) else (goto VC2005)
12
13 :VC2005Install
14 @echo on
15 @echo 安装运行中.....请耐心等待!
16 :::::将运行库放置打包到和需要支持的软件一起
17 @if exist 2005_x64.exe (echo 开始安装..... &start 2005_x64.exe &ping -n 10 127.1 >nul) else (echo 没有找到安装包!请自己下载VC2005并按照 &goto QVC2008)
18
19 :QVC2008
20 set "HKLMU=HKLMSOFTWAREMicrosoftWindowsCurrentVersionUninstall"
21 reg query %HKLMU%{350AA351-21FA-3270-8B7A-835434E766AD}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable X64
22 reg query %HKLMU%{8220EEFE-38CD-377E-8595-13398D740ACE}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable X64
23 reg query %HKLMU%{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update X64
24 reg query %HKLMU%{2B547B43-DB50-3139-9EBE-37D419E0F5FA}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 Redistributable IA64
25 reg query %HKLMU%{5827ECE1-AEB0-328E-B813-6FC68622C1F9}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable IA64
26 reg query %HKLMU%{977AD349-C2A8-39DD-9273-285C08987C7B}>nul 2>nul&&set VC2008=Microsoft Visual C++ 2008 SP1 Redistributable ATL Security Update IA64
27
28 if defined VC2008 (echo %VC2008% 已安装!&ping -n 5 127.1>nul) else (goto VC2008)
29 @if exist 2008_x64.exe (echo 开始安装..... &start 2008_x64.exe &ping -n 10 127.1 >nul) else (echo 没有找到安装包!请自己下载VC2005并按照 &goto QVC2010)
30
31 :QVC2010
32 @if exist 2010_IA64 (start 2010_IA64.exe) else goto CC
33 @echo 开始安装.....
34 @ping -n 10 127.1 >nul
35 :CC
36 @if exist 2012_x64.exe (start 2012_x64.exe) else goto DD
37 @echo 开始安装.....
38 @ping -n 10 127.1 >nul
39 :DD
40 @if exist 2013_x64.exe (start 2013_x64.exe) else goto EE
41 @echo 开始安装.....
42 @ping -n 10 127.1 >nul
43
44 :EE
45 @if exist 2014_x64.exe (start 2014_x64.exe) else goto FF
46 @echo 开始安装.....
47 @ping -n 10 127.1 >nul
48
49 :FF
50 @if exist Kehu.exe (start Kehu.exe) else echo 安装失败,请重新安装
51 @echo 按任意键结束.........
52 pause
53 @echo off
这样之后,当你点击生成的软件之后,它就会像我们以前首先的软件一样,成为一款正规的软件,具备安转,卸载,注册,以及自动检测运行库是否安装,并自动安装的软件了!!!
- QT中根据ID设置radio按钮
- QWebView在 Qt 5.x中编译出错:File not found: main.obj
- Qt实现小功能之列表无限加载
- Python基础08 面向对象的基本概念
- 如何选择合适的PaaS
- 使用Qt installer framework制作安装包
- Qt Style Sheet实践(三):QCheckBox和QRadioButton
- 堆排序
- 剑指OFFER之旋转数组的最小数字(九度OJ1386)
- Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
- 剑指OFFER之旋转数组的最小数字(九度OJ1386)
- Qt Style Sheet实践(二):组合框QComboBox的定制
- Python基础07 函数
- 剑指OFFER之旋转数组的最小数字(九度OJ1386)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【课后作业】Azkaban 自动化调度
- 【项目实战】Azkaban 自动化调度
- 【课后作业】ADS 层数据导出
- 【课后作业】ADS 层创建&数据接入
- 【项目实战】ADS 层复购率统计
- java设计模式-单例模式详解
- 技术迭代迷茫?Android资深架构师教你如何打破这个局面!
- 基于空间矢量的机器人动力学:铰接体惯量法matlab程序
- leetcode树之相同的树
- 1. 两数之和
- 突击并发编程JUC系列-原子更新字段类AtomicStampedReference
- 去除字符数组中指定的字符
- Android——Android Studio开发环境搭建及设置本地Gradle方法
- Java——类集框架:List集合接口的详解及应用举例
- Android——NORDIC nRF5x系列 DFU升级 APP实现