exe安装文件制作(Inno Setup制作Setup.exe)

本文主要记录使用Inno Setup制作setup.exe安装文件过程中遇到的问题和解决方案。

1.Inno Setup 基本使用请参考:

http://www.cnblogs.com/ahuo/archive/2007/07/16/819738.html

2.安装时提示需要关闭以下应用程序:Microsoft Visual Studio 2010,Microsoft (R) Visual C++ Package Server

  出现这个提示的原因:用VS2010编译出来的共享库或者插件(如果是exe,选择静态库不会出现这种情况的,Activex是不能选择静态库的)在其他机器上运行,需要复制mfc100.dll,msvcr100.dll等dll文件到{sys},如果有些机器上已经有这些文件,而且还在占用着,就会出现这个提示。即使在安装文件中加入了限制条件:如果存在不复制。

一开始觉得无所谓,出现就出现吧,又不影响安装。后来发现在有的机器上如果选择了“自动关闭该应用程序”,我自己程序不能用了。必须得解决啊,就开始研究InnoSetup的用法,发现没有跟这个问题相关的属性和用法。最后想到了批处理,不用Innosetup的脚本直接复制这些dll文件到{sys}中,通过bat命令。 希望有遇到类似问题的童鞋可以找到一种解决方法.如果有人知道其他方法,可以留言相互交流。

3.Inno Setup调用bat文件.

在 [Files] 段里加上你自己的批处理文件,比如:

Source: "copy.bat"; DestDir: "{app}"; Flags: ignoreversion

在 [Run] 段里加上安装后的运行命令,比如:

Filename: "{app}\copy.bat"; Flags: nowait  

4.bat脚本命令的编写

需要判断系统是32或64位

@echo off
@title 判断是否需要复制mfc100.dll等

if exist C:\Windows\SysWOW64 (

echo "存在C:\Windows\SysWOW64"

if exist C:\Windows\SysWOW64\mfc100.dll (

echo "C:\Windows\SysWOW64\mfc100.dll已存在" 
)else (
copy mfc100.dll C:\Windows\SysWOW64\mfc100.dll    
)

) else (

if exist C:\Windows\System32\mfc100.dll (

echo "C:\Windows\System32\mfc100.dll已存在" 
)else (
copy mfc100.dll C:\Windows\System32\mfc100.dll    
)

)
原文地址:https://www.cnblogs.com/xsgame/p/3082046.html