zoukankan      html  css  js  c++  java
  • NSIS 常用小问题合集(论坛收集)

    程序代码 程序代码
    问: NSIS里那种算法打包出来的文件更小?

    答: LZMA(固实) 相当于 7z 创建固实压缩档案。如果用 SetCompressorDictSize 把字典调大(不过同时也减慢了速度,占用更大内存),应该可以把压缩调到极限压缩等级。7z 的极限压缩默认字典为 32 MB
    SetCompressor /SOLID lzma
    SetCompressorDictSize 32

    程序代码 程序代码
    1.问: 为什么 NSIS 中的变量可以装 数值,也可以装 字符串。
     答: NSIS 是一种弱性语言,变量全部都是字符串,如果是整数运算的话在内不会自动把字符转换成整数变量。也就是说内部会执行类似于 atoi 的运算。

    2.问: .onInstSuccess是当安装成功且正当安装窗口关闭前调用,有没有当“安装成功”且正当安装窗口关闭后调用的回调函数呢?若没有,那么有没有办法在安装成功且正当安装窗口关闭前将页面隐藏(因为我此时使用了一个messagebox,想在message弹出时将 完成页面 隐藏。现在的情况是,message弹出,完成页面还在背后,真难看)?
     答: 以下脚本实现
      Function .onInstSuccess
       HideWindow
       MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地安装到你的计算机。"
      FunctionEnd

    程序代码 程序代码
    问: 关于把焦点定位到指定控件的方法。

    答: 在这里假设为一个控件为文本控件,ID 为 1200,第二个为编辑框控件,ID 为 1201,那么默认的时候编辑框里的文本是选中的。
    1. 把焦点转移到第一个控件上面
    Function PageSet
      InstallOptions::initDialog /NOUNLOAD $PLUGINSDIR\io.ini
      Pop $0
      GetDlgItem $1 $0 1200
      System::Call 'User32::SetFocus(i r1) i'
      InstallOptions::show
      Pop $0
    FunctionEnd

    2. 取消编辑框的文本选择
    Function PageSet
      InstallOptions::initDialog /NOUNLOAD $PLUGINSDIR\io.ini
      Pop $0
      GetDlgItem $1 $0 1200
      SendMessage $1 ${EM_SETSEL} -1 0
      InstallOptions::show
      Pop $0
    FunctionEnd

    3. 把焦点设到下一步按钮上面算了,下一步的控件 ID 是 1
    !define MUI_PAGE_CUSTOMFUNCTION_SHOW PageShow
    !insertmacro MUI_PAGE_DIRECTORY

    Function PageShow
      FindWindow $0 "#32770" "" $HWNDPARENT
      GetDlgItem $1 $0 1
      System::Call 'User32::SetFocus(i r1) i'
    FunctionEnd

    以上的代码中用到的控件 ID 可用 ResHacker 获取。

    程序代码 程序代码
    问: 因为要安装的程序不能安装到包含空格的路径中,否则程序不能正常运行.请问在NSIS中有没有办法判断$INSTDIR中有空格?

    答: 基本上这类问题可以简单化为是否符合 Dos 的 8.3 命名规则,就可以避免很多这类问题的发生。用 GetFullPathName 来获取短路径名。然后得到的字符串跟原来的路径字符串相比较,如果不相等,就是不符合 8.3 的规则,所以才会转出短路径。

    程序代码 程序代码
    问: 如果我把安装程序刻到光盘,安装时自动得到光驱盘符附给一个变量该怎么编写?

    答: StrCpy $0 $EXEDIR 3
  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/1289410.html
Copyright © 2011-2022 走看看