• 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
  • 相关阅读:
    线程
    开启程序子进程的方式
    multiprocess模块
    计算机网络小知识
    解决粘包问题
    网络编程相关
    反射与元类
    多态相关
    封装相关与接口
    类的继承和组合
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/1289410.html
Copyright © 2020-2023  润新知