BAT批处理自动安装软件

本文介绍了如何实现软件安装的自动化,重点讲解了静默安装原理和批处理文件的创建。通过静默参数,如/S,可以实现无人值守安装。文章列举了installshield、Inno setup、Microsoft Windows Installer和NSIS等四种打包工具的静默安装参数,并提供了具体的批处理命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动化安装软件

安装软件的自动化是指的,安装过程不需要人工参与。
如何实现安装软件的自动化?就是静默安装。
静默安装又称为无人值守安装,以默认值自动安装软件。

 

静默安装原理

原理很简单,就是软件打包程序预留了安装参数,安装时可加上该参数。当我们查不到或者软件安装包没预留静默安装参数时,只能手动点击下一步进行安装。 

 

创建编辑批处理文件 install.bat,输入以下命令并保存。
代码如下:  bat与exe安装包在同一个目录下,命令如下:

start /wait   .sogou_pinyin.exe /S

 

不在一个目录下,可以用绝对路径也可以先切换到安装文件所在目录下:
cd 安装文件所在路径
start /wait   .sogou_pinyin.exe /S

这里安装包sogou_pinyin.exe 的静默参数为 /S,许多安装包的静默参数是  /S

 

比如:安装WinRAR 
start /wait e:\software\wrar.exe /S

start /wait e:\software\flashget.exe /S

 

静默参数

不同的打包工具软件制作的安装包,参数会有所差异。几乎所有的安装包都是由4种打包工具制作的。


四种打包工具软件

installshield型

   installshield是商业级别的安装程序封装工具,许多大型商业软件的安装包都是用它来封装的。
   安装参数:
             -R   用于记录安装过程
             -s    用于进行软件的自动安装
             -f1   指定setup.iss应答文件的路径


   使用方法:

1)先在命令行下,用-R参数进行软件的安装,其安装过程与正常手动安装一样,但是它会记录安装过程中手动选择的项目,在软件安装结束后,在 c:\windows目录下找到名为setup.iss的文件,它就是用来自动安装的重要应答文件。

2)将以上的setup.iss文件与安装程序放在同一目录下,利用-s参数进行全自动安装。

   例如: start /wait   x:\phtoshop\setup.exe -s -f1 "C:\setup.iss"     (如果setup.iss文件与安装程序在同一目录,可以省去-f1参数)

 

Inno setup 型

Inno setup 是一款自由的安装程序打包封装工具,其功能和稳定性均可与商业封装工具媲美。

安装参数:  
                /silent(/verysilent) 用于软件的自动安装
                sp-     用于跳过安装程序的确认界面
使用方法:

start /wait   E:\thunder5.exe  /verysilent  sp-


此安装参数比较容易使用,但我们把它写入到批处理文件中,批量软件安装时,有的软件会在安装完成后自行启动。比如迅雷,为不影响系统性能,我们可以结合其他的命令终止其进程,例如:
 

    @echo off
    start /wait E:\thunder6.exe /verysilent sp-
    echo.
    taskkill.exe /F /IM Thunder5.exe

 

Microsoft Windows Installer型

微软的打包工具。许多老的工具软件生产厂家,都选择微软自带打包工具
参数:

      /   /QB(/QN)用于自动安装软件
      /REBOOT=suppress 安装后不重启系统


使用方法:

start /wait  E:\setup.exe   /QB REBOOT=Suppress

 

NSIS (Nullsoft SuperRMP Install System )型

例如:winamp

使用参数:

          /S   用于自动安装软件
例如:

           e:\winamp\setup.exe /S


说明:此类软件安装后,会给出一个文件关联确认窗口,无法跳过。

 

如何得到软件的静默安装参数

   1、注册表中查询其安装/卸载参数

  先安装软件,然后到注册表中查询其安装/卸载参数。看InstallSource和UninstallString的参数内容信息


  2、用/?查询
        拿到一个安装包,cmd下命令,用/?查询。
        如果不支持/?参数,还可以用各静默安装参数试试:

( [/S] [/silent [/noreboot]] [/verysilent [/sp-] [/norestart]] [/q] [/qn] [/qb] [REBOOT=SUPPRESS] [/s /v/qn] [/q:a /r:n] [/u /n /z] [/quiet] [/SilentInstallNoSponsor] [/SilentInstall] [/s /qn] [/s /qd] [-s] [-q] 等)
     这个办法通常都比较有效。 

 

软件全自动(静默)安装

安装 DirectX 9.0b
start /wait e:\software\dx9\dxsetup.exe /install /silent
 
安装 Movie Maker 2.0
start /wait e:\software\wmm2\mm20.msi /qn
 
安装 .NET Framework v1.1
start /wait e:\software\NetFramework\netfx.msi /QB

安装 Microsoft JavaVM
start /wait e:\software\msjavwu.exe /Q:A /R:N
 
安装AD-aware 6
start /wait e:\software\Adaware.exe /s
 
安装Winamp
start /wait e:\software\winamp.exe /S
 
 安装 ZoneAlarm Free
 
start /wait e:\software\ZoneAlarm.exe /silent /noreboot
start /wait e:\software\ZoneAlarm.exe /s /noreboot

 

安装软件的其他知识

msiexec.exe 是系统进程,是Windows Installer的一部分。用于安装Windows Installer安装包(MSI),对系统的正常运行是非常重要的,一般在运行Microsoft Update安装更新或安装部分软件的时候出现,占用内存比较大。由于此进程只会出现于安装Windows Installer安装包时,所以经常被使用者视作不明进程。

 

安装或配置产品

在Windows系统的DOS系统中,cmd命令行有两个参数让人理解很吃力,一个是CMD /C ,另一个是CMD /K,这两个参数的区别在哪里?其实/C 是  /Close的简写;/K 是 /Keep的简写。一个是命令运行之后关闭窗口,一个是保留窗口。


打开一个CMD窗口,输入:CMD /?

查看一下帮助文档,关于cmd /c 和 cmd /k 这两个参数的说明如下:

/C      执行字符串指定的命令然后终止 ( /C 代表  /Close)

/K      执行字符串指定的命令但保留 (  /K 代表 /Keep的简写)

 

运用innsetup建立的安装包

手动双击安装包会显示安装界面,并且等待用户点击安装按钮操作,完成安装,安装完毕会按照脚本,启动新版本软件

参数  /silent   会显示安装界面,自动开始安装,安装完毕后不会启动新版本软件

参数 /verysilent  不会显示安装界面,自动安装,安装完毕后,不会启动新版本软件

 


/SP-
Disables the This will install... Do you wish to continue? prompt at the beginning of Setup. Of course, this will have no effect if the DisableStartupPrompt [Setup] section directive was set to yes.

/SILENT, /VERYSILENT
Instructs Setup to be silent or very silent. When Setup is silent the wizard and the background window are not displayed but the installation progress window is. When a setup is very silent this installation progress window is not displayed. Everything else is normal so for example error messages during installation are displayed and the startup prompt is (if you haven't disabled it with DisableStartupPrompt or the '/SP-' command line option explained above).

If a restart is necessary and the '/NORESTART' command isn't used (see below) and Setup is silent, it will display a Reboot now? message box. If it's very silent it will reboot without asking.

参数  SP- 

禁用 安装开始时的提示,比如: 你想继续吗?如果 DisableStartupPrompt[Setup]节指令被设置为yes,sp-参数将没有效果。

参数/SILENT, /VERYSILENT

指示安装程序保持SILENT(安静)或VERY SILENT非常安静,即通常说的静默安装。当安装程序silent静默安装时,不会显示安装向导和安装后台窗口,但会显示安装进度的窗口。当安装程序使用verysilent参数安装时,就连显示安装进度窗口也不会显示。其他一切正常,比如,安装期间仍然会显示错误消息和启动提示(在您没有使用disablestartupbrompt或上面解释的“/SP-”命令行选项禁用它)。

如果需要重新启动,并且没有使用'/NORESTART'命令,并且使用silent参数安装,它将提示窗口询问是否重新启动。如果使用verysilent参数,它不会询问,而自动重启。

 

 

[Run]
Filename: "{app}\INIT.EXE"; Parameters: "/x"
Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent
Filename: "{app}\MYPROG.EXE"; Description: "Launch application"; Flags: postinstall nowait skipifsilent unchecked

 

 

 

<think>好的,我现在需要回答用户关于如何通过Python调用谷歌离线地图API的问题。首先,我需要了解用户的具体需求。他们提到“离线地图”,可能是指在没有网络连接的情况下使用地图数据,或者下载地图数据后本地使用。 根据用户提供的引用内容,引用[2]提到了使用Python脚本下载谷歌卫星影像并加载到GlobalMapper中。这可能涉及下载地图瓦片(tiles)并存储本地,然后通过某种方式加载这些瓦片。不过用户希望的是调用Google的离线地图API,而通常Google地图的API需要在线使用,离线使用可能涉及法律和数据使用条款的问题。因此,我需要先提醒用户注意遵守相关法律法规。 接下来,我需要考虑技术实现。通常,离线地图的使用需要预先下载地图瓦片,并搭建本地服务器或使用本地文件系统来加载这些瓦片。引用[3]中提到了使用Qt和JavaScript交互调用百度离线地图,这可能涉及到将地图瓦片存储在本地,并通过Web视图加载。类似的思路可能适用于谷歌地图,但需要确保数据的获取是合法的。 步骤可能包括: 1. 获取谷歌地图的瓦片数据,这可能需要使用下载工具,但需注意合规性。 2. 存储瓦片到本地目录结构中,保持正确的层级和坐标命名。 3. 使用Python搭建一个简单的Web服务器或使用现有的库(如Flask)来提供这些瓦片。 4. 使用Web视图组件(如PyQt5的QWebEngineView)加载包含地图库(如Leaflet或OpenLayers)的HTML页面,配置该页面使用本地的瓦片服务。 示例代码可能包括下载瓦片的脚本(但需要注意法律问题,因此可能不提供具体下载代码),以及使用Flask提供本地瓦片服务的代码,然后结合HTML/JavaScript显示地图。需要引用用户提供的引用内容中的相关部分,例如引用[2]提到下载卫星影像的方法,但可能涉及不同的工具。 需要注意的是,直接使用谷歌地图的瓦片可能违反其服务条款,特别是未经授权的情况下。因此,建议用户考虑使用开放数据源,如OpenStreetMap,引用[1]中提到的PyQGIS加载OSM离线地图的方法可能更合法且可行。 总结回答结构: 1. 法律和使用条款的注意事项。 2. 技术实现步骤:下载瓦片(需合法)、搭建本地服务、前端显示。 3. 示例代码框架,可能使用Flask和Leaflet。 4. 替代方案建议,如使用OpenStreetMap数据。 5. 相关问题。 需要确保回答中的LaTeX格式正确,行内公式用$...$,独立公式用$$...$$。同时生成相关问题。</think>由于Google地图服务条款明确禁止未经授权的离线使用和地图数据缓存[^2],直接通过Python调用Google离线地图存在法律风险。建议优先考虑合法替代方案(如OpenStreetMap)。若需实现类似功能,可采用本地瓦片服务+Web前端结合的方案: ### 技术实现步骤 1. **地图瓦片获取** 需通过合法渠道获取地图数据(例如购买授权或使用开放数据源)。假设已获得授权,瓦片存储路径通常遵循$z/x/y.png$格式,其中$z$为缩放级别,$x,y$为瓦片坐标。 2. **搭建本地瓦片服务器** 使用Python Flask提供本地瓦片访问服务: ```python from flask import Flask, send_from_directory import os app = Flask(__name__) TILES_DIR = os.path.abspath('tiles') @app.route('/tiles/<int:z>/<int:x>/<int:y>.png') def get_tile(z, x, y): return send_from_directory(os.path.join(TILES_DIR, str(z), str(x)), f'{y}.png') if __name__ == '__main__': app.run(port=5000) ``` 3. **前端地图渲染** 创建HTML页面使用Leaflet库加载本地瓦片: ```html <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"/> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script> </head> <body> <div id="map" style="height: 600px;"></div> <script> var map = L.map('map').setView([39.9042, 116.4074], 12); // 北京坐标 L.tileLayer('http://localhost:5000/tiles/{z}/{x}/{y}.png', { maxZoom: 18, attribution: 'Local Tiles' }).addTo(map); </script> </body> </html> ``` ### 替代方案建议 - **使用OpenStreetMap数据**:通过PyQGIS加载OSM离线地图(如引用[1]所述),合法且无版权风险 - **百度/高德离线地图**:部分国内地图服务提供商业授权(引用[3]展示了百度离线地图的调用方法)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值