打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
inno setup 打包中vcredist
前言:
用inno setup打包的程序,要在win7下运行,缺少运行环境,所以需要安装vcredist_x86.exe这个。将vcredist_x86.exe一起打包,并在打包脚本中写代码实现安装程序安装后将安装vcredist_x86.exe。
问题:
在卸载程序后,再次安装时,弹出了vcredist_x86.exe的修复和卸载界面,原因在于vcredist_x86.exe已经在前一次安装中安装到了系统中了,此时不需要再次安装了。
如何判断vcredist_x86.exe是否已经安装了呢??
我搜索了论坛中的帖子,有人说是检测windows目录下的winsxs文件中是否有那些dll文件,如果这样的话,我将vcredist_x86.exe解压后其中有个cab的压缩文件,其中有几个dll,是否就是这些文件?那我能不能不需要安装,直接将这些dll通过代码拷贝到指定文件夹中?其他还有很多.sp的文件有什么作用?
另外,如果可以通过拷贝dll来免除安装的话,拷贝的目的文件夹如何命名?有何特殊要求?
拷贝到程序所在目录就可以了。
程序是先搜索自身所在目录在去搜索系统所在目录的。
一般打包程序的DLL都是释放在自己所在的目录
用到的DLL:
mfc80d.dll、mfc80ud.dll、mfcm80d.dll、mfcm80ud.dll
Microsoft.VC80.DebugCRT.manifest、
Microsoft.VC80.DebugMFC.manifest、
Microsoft.VC80.DebugOpenMP.manifest、
msvcm80d.dll、msvcp80d.dll、msvcr80d.dll
不需要解压缩vcredist_x86.exe
http://msdn.microsoft.com/zh-cn/library/ms235291%28v=VS.90%29.aspx
将 Visual C++ 库 DLL 部署为私有程序集
在此方案中,只需将一个文件夹从开发计算机复制到目标计算机,并将相关程序集作为私有并行程序集来安装,即可完成应用程序的部署工作。若要将 Visual C++ 库部署为私有程序集,请执行下列步骤:
步骤
1.
在开发计算机上创建一个文件夹结构,使其与将在目标计算机上使用的文件夹结构相匹配。在本示例中,创建一个 \bin 文件夹并将 myapplication.exe 复制到其中。然后,创建一个 \bin\mylibrary 文件夹并将 MyLibrary.dll 复制到其中。
2.
在开发计算机上,将 Microsoft.VC90.CRT 和 Microsoft.VC90.MFC 从 %PROGDIR%\Microsoft Visual Studio 9.0\VC\Redist\x86 复制到 \bin 和 \bin\MyLibrary 中。
[说明] 说明:
Visual C++ 速成版在安装期间不会在开发计算机上创建 %PROGDIR%\Microsoft Visual Studio 9.0\VC\Redist\。若要对使用 Visual C++ 速成版生成的应用程序重新发布 Visual C++ 库,请使用 Visual C++ 可再发行组件包 (VCRedist_*.exe)。有关更多信息,请参见前面的“将 Visual C++ 库 DLL 部署为共享程序集”一节。
[说明] 说明:
对于将 64 位应用程序部署到 64 位操作系统,使用 \vc\redist\amd64 或 \vc\redist\ia64。
3.
将 \bin 文件夹复制到目标计算机。在支持基于清单的绑定的目标计算机(Windows XP Home Edition、Windows XP Professional、Windows Server 2003 和 Windows Vista)上,不需要做更多的准备工作。在不支持类似绑定的计算机(Windows 98、Windows 98 Second Edition、Windows Millennium Edition 和 Windows 2000)上,路径中必须有 Microsoft.VC90.CRT 和 Microsoft.VC90.MFC。
[说明] 说明:
对于调试应用程序,请使用 \vc\redist\debug_nonredist\ 中的调试 DLL。但是,对于将 Visual C++ 库的调试版本部署为私有程序集的应用程序,可能无法进行远程调试。有关更多信息,请参见准备用于运行调试可执行文件的测试计算机。
[说明] 说明:
如果要在目标计算机上进行远程调试,必须复制所有调试 DLL,或者按照准备用于运行调试可执行文件的测试计算机中的步骤来安装调试 DLL。
有网友写好的代码。可以参考一下。inno setup的脚本
C/C++ code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[Setup]
Your program setup
[Files]
; Visual C++ redist
Source: vcredist_x86.exe"; DestDir: "{tmp}"; Check: NeedInstallVC9SP1
[Run]
Filename: "{tmp}\vcredist_x86.exe"; Parameters: /q; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "Installing Microsoft Visual C++ Runtime ..."; Check: NeedInstallVC9SP1
[Code]
var vc9SP1Missing: Boolean;
function NeedInstallVC9SP1(): Boolean;
begin
Result := vc9SP1Missing;
end;
function InitializeSetup(): Boolean;
var version: Cardinal;
begin
if RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9A25302D-30C0-39D9-BD6F-21E6EC160475}', 'Version', version) = false then begin
vc9SP1Missing := true;
end;
result := true;
end;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VS2008环境下开发的某些程序在其他机器运行提示“由于应用程序配置不正确,应用程序未能启动”的问题(IIS)
电脑运行应用程序失败出现运行库错误的问题及解决方法汇总
目标电脑未安装VC++6.0或者VS,运行APP丢失DLL问题解决办法
vc6.0安装失败解决办法
Visual C++运行库DLL介绍(转载)
应用程序配置不正确,程序无法启动
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服