欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    NSIS常见问题集锦Word格式.docx

    • 资源ID:8184846       资源大小:21.01KB        全文页数:7页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    NSIS常见问题集锦Word格式.docx

    1、Tahoma 11700SendMessage $0 $WM_SETFONT $1 0问:添加版本号 引用内容VIProductVersion 1.2.3.4VIAddVersionKey /LANG=$LANG_ENGLISH ProductNameTest ApplicationCommentsA test commentCompanyNameFake companyLegalTrademarksTest Application is a trademark of Fake companyLegalCopyright?FileDescriptionFileVersion1.2.3在脚本中加

    2、入上面的代码,则为 NSIS 生成的 exe 添加版本信息。问题就是,能否让属性中语言显示为&中文(中国)&?中文 ID 是 2052。 把 $LANG_ENGLISH 改为 2052。用 2052 之后确实变成&了。但其他内容仍旧是乱码,不知有什么办法可以解决吗?版本信息设置语句,放在 !insertmacro MUI_LANGUAGE 的后面,NSIS 要注重次序的。如果使用古典界面,放在 LoadLanguageFile $NSISDIRContribLanguage filesSimpChinese.nlf 的后面。如何禁止显示 banner 。图示的效果是因为安装程序初始化的时候,也

    3、就是 .onInit 函数里需要用到某个文件的时候安装程序需要搜索整个数据区块来把它解压出来,当安装程序比较大的时候搜索比较费时,这个时候才显示解压百分比。一般都是用 ReserveFile 来避开这种搜索。比如 Function .onInit 里有: 程序代码InitPluginsDirFile /oname=$PLUGINSDIRio.ini.io.ini或者其他类似的话,安装程序就需要搜索并解压这个文件。一般在脚本头部加: 程序代码ReserveFile 这样 io.ini 就保存在数据区块的尾部,安装程序初始化的时候就不用搜索整个数据区块了,相当于加快了安装程序的启动速度。根据以上方

    4、法使用了,确实不会再出现初始化的对话框了,但是在自定义的 InstallOptions 页显示前,程序还是会停顿一段时间,请问这是为何?如何避免?某些控件比较消耗时间的,比如显示 ICON、位图 等,如果 InstallOptions 里含有这些控件可能会停顿。如果 InstallOptions 是第一个页面的话还要把 InstallOptions.dll 加入到 ReserveFile 参数里。再或者就是进入 InstallOptions 的时候含有比较复杂的指令,比如循环等。一般在加入 ReserveFile $NSISDIRPluginsInstallOptions.dll 既可避免。如

    5、何运行一个安装文件 .inf 答:ExecWait RunDll32 advpack.dll,LaunchINFSection skins.inf,DefaultInstall关联文件图标后,图标没变化。刷新图标用, System:Call shell32.dll:SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0) 问:我用NSIS做好了一个安装程序,因为数据较多,一共有400多M,用的LZMA压缩方式,做好后的安装程序约200M,但是我发现在运行这个安装程序时会在系统TEMP目录产生一个同安装后的全部内容同样大的临时文件(一边运行一边加大,最

    6、后到400多M去了),如果我做的程序小倒没什么,可是这个程序有400多M,除了要写入安装的数据外还要同样大小的空间放临时文件,这样子也实在是太花不来,我想请问:有什么办法能让其在安装时不使用这么多的临时空间吗?安装的脚本是用HM NIS Edit的向导生成的。这是因为 NSIS 在用 LZMA 时采用了固实压缩,何谓固实压缩,其实就是把所有文件统一起来压缩,所以这样压出来的文件更加的小,同时也带来了一个问题,安装解压的时候,在临时文件夹中生成一个临时文件,随着安装的进程逐渐增大,到最后,需要临时文件会变成跟原安装程序一样大,也就是说,需要原安装程序 2 倍的空间才可以安装这个程序,所以对于安装

    7、大量文件时,这是不适合的。NSIS 2.07 版本之前 LZMA 算法是固实压缩的,没有非固实的选项,如果需要这样做,只有下载非固实压缩的编译器,但是 2.07 后的 NSIS 的 LZMA 压缩已经改为默认非固实压缩了,所以这个问题同时也不再存在。如果在制作少量文件的安装时,仍然想取用固实压缩可以加入 /SOLID 参数。像这样: SetCompressor /SOLID lzma问:能不能在 Section 区段中实现读取INI文件状态来安装。若选中单选框1则安装1中定义的文件。若不选中则不安装。若选中单选框2则安装2定义的文件。若不选则不安装。使用以下代码include LogicLib

    8、.nshSection -postSetOutPath $INSTDIRinsertmacro MUI_INSTALLOPTIONS_READ $INI_VALUE info.iniField 2State$If $INI_VALUE = 1File /a .filefileA.exe.filefileB.exe$EndIfField 3SectionEnd或者使用以下代码;选中时执行的代码$Else不选中时执行的代码SectionEnd问:在 NSIS 中如何设置工作目录,例如一些文件的快捷方式,还有安装完一个软件后运行一个程序,而这个程序需要检测当前工作目录下的某个文件,这时候设置工作目录

    9、尤为重要,否则程序不能正常运行。NSIS 中设定工作目录使用 SetOutPath,例如在运行程序的代码 ExecWait $INSTDIRtest2.exe 前放入 SetOutPath $INSTDIR,那么 $INSTDIR 将会成为当前的工作目录,建立快捷方式也会把工作目录设为 $INSTDIR。卸载之前运行某程序只需要把运行指令放到 Function un.onInit 里就行问:记得以前看到有帖子介绍过可在NSIS中调用.inf文件安装附加驱动程序,具体实现代码如下形式: 引用内容ExecWait RunDll32 advpack.dll,LaunchINFSection driv

    10、ers.inf,DefaultInstall偶在打包一小东东时使用了这一方法,但遇到的问题时,如果在卸载区段里设置能自动卸载安装过的驱动程序呢?能否卸载需要看 INF 文件里面是否有卸载的区段,例如使用 NSIS 卸载 Windows Messenger 可以这样: 程序代码ExecWait RunDll32 advpack.dll,LaunchINFSection $windirINFmsmsgs.inf,BLC.Remove关于 BLC.Remove 的来源,可以打开 msmsgs.inf 文件后,能找到名称为 BLC.Remove 的区段,该区段用于卸载。区段的名称是编写者自己定制的。不

    11、同的inf文件,区段名也可能不同。其他的 *.inf 文件也可以按照此类做法。问:(问题如下)1、我做了一个可同时在简繁英下执行的安装程序。但有个很大的困惑。刚开始时做的是简体中文版,在简中下当然没问题,但在英/繁下,创建的中文程序组名和写注册表时显示的是乱码。于是想到写一个三者皆适合的安装程序。我的做法是这样的,在涉及到创建中文程序组和写注册表时,加入一个判断,如果英文或繁体,则分别创建英文文件名和big5内码文件名。但在繁体winxp和英文win2k下测试后,发现根本无法正常创建程序组,也无法正常生成uninstall.exe文件。而写入注册表的中文字符,也不能在繁体系统的注册表中正常显示

    12、,而是乱码。请教高手,这种多语言环境下该怎么处理,才能正常显示呢? 总不能全部都给创建成英文的吧?2、另外有个小问题,如何让nsis做的安装程序不显示具体的安装文件名,而只显示&正在复制文件…&象foobar那样,可惜foobar也有个显示详细情况的按钮,我想在复制文件过程中完全不显示和提示被复制的文件情况。答:(解答如下)1、最简单的处理办法就是给需要处理的资源进行一个定义,然后使用 LangString 定义不同的资源。给个示例: 程序代码Caption $(CAPTION)LangString CAPTION $1033 DreamMail InstallationLangS

    13、tring CAPTION $2052 DreamMail 安装向导LangString CAPTION $1028 DreamMail 杆翾旧2、可以使用 DetailPrint ,示例, 程序代码DetailPrint 正在复制文件.NSIS对于安装卸载的ICO图标大小有什么要求?编译的时候出现以下错误提示: 引用内容Error finding icon resources: installer, uninstaller icon size mismatch - see the Icon instructions documentation for more information - f

    14、ailing!只要保证安装图标与卸载图标大小相同即可。如何屏蔽如下图中的安装程序校验。CRCCheckon|off|force 指定安装前安装程序是否对自身执行一个 CRC。注意,如果用户使用了 /NCRC 命令行参数,且你没有指定 force 参数时,不会执行 CRC,这样有可能导致用户安装一个损坏的安装程序。安装程序 CRC 校验是默认打开的。可以在脚本中用 CRCCheck off 来默认禁止安装程序的 CRC 校验。不过这样做正如解释上说的可能安装会出现问题。作汉化的最好加上校验,免得安装程序的问题变成你汉化质量的问题。在安装的时候不是可以选择多种语言么?但是我怎样实现当选择英文时就装

    15、英文版,选择中文时就装中文版?使用以下脚本: 程序代码StrCmp $LANGUAGE $LANG_SIMPCHINESE 0 +3你需要安装的中文文件Goto lbl_finish你需要安装的英文文件lbl_finish:组件A 组件B 组件C 均为可选,A可单独安装,B或者C被选择的时候A必须被选择。以下代码: 程序代码Section 组件 A aaadetailprint ASectionEndSection 组件 B bbbB组件 C cccCSectionEndFunction .onSelChangeSectionGetFlags $bbb $0SectionGetFlags $c

    16、cc $1IntOp $0 $0 & 1IntOp $1 $1 &IntCmp $0 1 0 +2SectionSetFlags $aaa 1IntCmp $1 1 0 +2FunctionEnd解释:SectionGetFlags 表示获取某区段的flags状态(就是是否被勾选,选中返回值为1,反之为0)。SectionGetFlags $bbb $0 表示获取序号为$bbb的区段的Flags状态并把返回值输出到变量 $0,C 区段相同。接着就是 StrCmp ,解释同上楼。SectionSetFlags $aaa 1 表示设置序号为 $aaa 区段的 Flags 状态为 1,即勾选

    17、。怎么让&许可协议&页面的标题栏,如程序中的&MutliPages 演示&修改为&MutliPages 演示:。首先创建一个函数,如下。 程序代码Function LicensePagePreSendMessage $HWNDPARENT $WM_SETTEXT 0 STR:我爱你FunctionEnd然后在协议页面句子 insertmacro MUI_PAGE_LICENSE c:pathtolicenceYourSoftwareLicence.txt之前加入如下语句define MUI_PAGE_CUSTOMFUNCTION_PRE LicensePagePre问:比如,我把 a.exe

    18、用nsis包装好,安装到 c:helloLiba.exe,完成后,想把c:helloLib添加到系统环境变量的path里头,这样,在任何地方输入a.exe可执行。如何将路径添加到系统环境变量中?以下代码实现: 程序代码ReadRegStr $0 HKLM SYSTEMCurrentControlSetControlSession ManagerEnvironmentPathWriteRegExpandStr HKLM $0;C:hellolib另类方法一:写注册表,如 程序代码HKEY_CLASSES_ROOTApplicationsa.exeshellopencommand=yourpath

    19、a.exe另类方法二: 程序代码HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Pathsa.exehelloLiba.exe在NSIS中如何才能做到根据对于注册表键值的判断决定是否写入字串,如果判断出某个key存在,则写入相应的字串,如果不存在,则不写入字串。例如:我先要判断&HKLM SOFTWAREnsis&这个key存不存在。如果存在则写入字串&DispName:nsis&,应该是用&WriteRegStr HKLM SOFTWAREnsisDispNamensis如果不存在这个key,则不写入注册表,继续下面的安

    20、装。 程序代码ReadRegStr $0 HKLM SOFTWAREnsis IfErrors 0 +2Goto +2如何制作安装包的时候需要调用系统函数来检测当前安装包运行的操作系统的内码页。以下代码显示系统语言: 程序代码System:Call Kernel32:GetSystemDefaultLangID(v .) i .sPop $0IntOp $0 $0 & 0xFFFFMessageBox MB_OK $0问:如何用NSIS注册字体?include WinMessages.nshSection MainSection SEC01File /oname=$FONTStahoma.tt

    21、f tahoma.ttfPush $FONTStahoma.ttfSystem:Gdi32:AddFontResource(t s) i .sIntCmp $0 0 0 +2 +2MessageBox MB_OK 注册字体失败SendMessage $HWND_BROADcast $WM_FONTCHANGE 0 0如何用 NSIS 安装输入法。 程序代码SetOutPath $SYSDIRFile WBIME.ime五笔输入法$SYSDIRWBIME.imeImm32:ImmInstallIME(t s, t s) i .sImmIsIME(i s) i .sIntCmp $0 1 0 +3 +3输入法安装成功Goto +2输入法安装失败


    注意事项

    本文(NSIS常见问题集锦Word格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开