当前位置: 代码迷 >> VC >> NSIS制作安装程序的(剩上的分数全献下)
  详细解决方案

NSIS制作安装程序的(剩上的分数全献下)

热度:6328   发布时间:2013-02-25 00:00:00.0
NSIS制作安装程序的高手请进(剩下的分数全献上)
正准备制作用NSIS软件制作一个安装包,遇见两个问题很苦恼,希望大家能帮忙解惑!

 1.安装盘要有版本号,版本号在安装完毕前写入注册表,版本号要可配置,
已方便安装盘的制作(例如写在文本里,编译安装文件时从中读取)。
这个文本文件的格式是ini的还是txt的呢?在脚本里该如何去获取呢?
本来在脚本里直接应用版本号就是:!define PRODUCT_VERSION "1.0";但是现在的需求是希望
版本号可配置,因此我的理解应该是建立一个这样的文本文件,里面包含:version=1.0;
然后脚本里的代码就是:!define PRODUCT_VERSION "version";这样的话,以后修改版本号的话就只
需要在文本文件里修改version就OK了,但是不知道脚本里究竟应该怎样去获取和表示?

2.C++程序要运行,需要一些库(实际就是dll)的支持,例如crt相关的一些,用了MFC的还要有mfc的dll,
这些基础类库微软做了个安装程序,叫vcredist_x86.exe,不同版本有不同的这个文件,在安装程序开始
正式copy文件前,先让安装程序运行这个exe,直到这个exe运行完毕后再执行下面的安装过程。
这也是一个需求,不清楚安装程序如何才能先运行x86.exe,然后再运行自己的项目程序?
希望高人指点!全分奉上!!!

------解决方案--------------------------------------------------------
不会吧,难道都没人做过类似的吗?帮忙指点下 啊,在线求解啊!
------解决方案--------------------------------------------------------
1. NSIS脚本文件可以包含另外一个文件,你把你的版本号单独写在一个文件里面,然后生成这个文件就可以了.
2. NSIS支持shell命令, 你会c++,这个查查手册就能搞定

NSIS的帮助手册很完善,里面都有例子,很详细
------解决方案--------------------------------------------------------
没有人说的更详细一些的吗?
------解决方案--------------------------------------------------------
该回复于2010-07-02 14:36:39被版主删除
------解决方案--------------------------------------------------------
不懂,up
------解决方案--------------------------------------------------------
在线求解啊!
------解决方案--------------------------------------------------------
怎么没人给解答啊!自己顶!
------解决方案--------------------------------------------------------
为什么不在安装完成之后再执行vcredist_x86.exe呢?
下面是代码
-----------
Function .onInstSuccess
Exec "$INSTDIR\vcredist_x86.exe"
FunctionEnd
------解决方案--------------------------------------------------------
NSIS 就是C++ 写的, 所谓脚本,只是C++ API的一个对应的封装,VC里面用到的API, 比如Message, shell, exec等统统都有,根本就是一样的,只是形式稍有差异, 如果你肯花30分钟认真看看其文档,也不至于N多天后还顶呀顶
------解决方案--------------------------------------------------------
怎么就没人会吗?在线等了n天了
------解决方案--------------------------------------------------------
比如,在脚本所在文件夹有一个文本文件,内容为:
Version=2.1.0
脚本中使用:
!searchparse /file version.txt 'Version=' PRODUCT_VERSION
即可将 PRODUCT_VERSION 的值定义为 2.1.0。
不过在编译输出信息中看不到,但是可以测试:
MessageBox MB_OK
------解决方案--------------------------------------------------------
MB_ICONINFORMATION ${PRODUCT_VERSION}
------解决方案--------------------------------------------------------
对上面补充一下,version.txt 是文本文件的名字,路径可使用相对或绝对。
------解决方案--------------------------------------------------------
这个好难啊~不大懂
------解决方案--------------------------------------------------------
关于 VC 运行库,静默安装即可。

SetDetailsPrint textonly ; 目的是只在上面显示提示文字,下面的框什么都不显示
DetailPrint '正在安装 VC++ 运行库...'
SetOutPath $TEMP ; 释放到临时文件夹
File '.\vcredist_x86.exe' ; 改成你的源路径
ExecWait '"$TEMP\vcredist_x86.exe" /Q' ;静默参数 /Q
Delete "$TEMP\vcredist_x86.exe" ; 删除文件
SetDetailsPrint both ; 恢复默认的显示详情模式

加入到你的第一个安装区段(Section)最签名,这样就先安装了。
不过放在哪里都一样,其实这个是按照先后顺序执行的。
------解决方案--------------------------------------------------------
用这个参数也可:
vcredist_x86.exe /quiet /passive /norestart
------解决方案--------------------------------------------------------
本尊花时间给你解决了所有问题你一个无满意回复就把我打发了?