使用NSIS打包多语言包

xiaoluhelu 2016-05-03 06:40:44
客户端语言是C++,分中文版本和英文版本,想把这两个版本打到一个包里,让用户选择安装语言,根据安装语言达到选安装包的目的。
即:
想达到的功能是:选择英文时,安装的是英文安装包,选择中文时,安装的是中文安装包。

现在可以做到安装卸载时的字符可以根据选择切换,但是安装包这里应该怎么弄?
...全文
1883 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2016-05-20
  • 打赏
  • 举报
回复
创建 lnk 图标显示错误的问题,这个应该是 Windows 系统的 bug。因为创建 lnk 调用的是 IShellLink 这个 COM 组件,而这个组件在 64 位系统上的 32 位程序指定图标路径时使用 NSIS 中使用 $PROGRAMFILES、$PROGRAMFILES32 和 $PROGRAMFILES64 任何一个,总是将其解析为 C:\Program File,然而这个路径实际上可能不存在。当你手工更改,发现其都显示的是 %Program Files%。如果手工指定 C:\Program Files (x86) 中的图标,系统是能够显示正确图标的,所以 32 位程序如果将程序安装到 C:\Program Files (x86),并且图标也从其中引用,会造成实际上系统去从 C:\Program Files 中加载图标这种错误。
「已注销」 2016-05-06
  • 打赏
  • 举报
回复
不知道你说的是什么图标。如果是程序本身的图标,比如 exe 这个大家都知道是程序编译时设置的。不过在 Windows 7 和 8 上面还是会有图标显示错误的 bug。不仅仅是文件会显示错误,lnk 偶尔显示也会错误图标,或者运行程序后,任务栏显示的图标也会是错误的,这种问题无解,等重启系统之后就没问题了。如果说的是 lnk 想自定义图标,可以通过给 NSIS 的 CreateShortcut 传递参数。 CreateShortCut link.lnk target.file [parameters [icon.file [icon_index_number [start_options [keyboard_shortcut [description]]]]]] 如: CreateShortCut "$DESKTOP\My Program.lnk" "$INSTDIR\My Program.exe" "/param" "$INSTDIR\My Program.exe" 1 从左到右是 lnk 路径、目标路径、参数、图标文件路径、图标文件索引......
xiaoluhelu 2016-05-06
  • 打赏
  • 举报
回复
我就是用的CreatShortCut进行自定义图标,可是图标显示的不是我定义的那个,我的安装目录是ProgramFile(X86),而当把安装目录改成ProgramFile就可以正确显示;删除的时候,开始菜单和桌面快捷方式删除不掉,已经百度了这些方法,还是不行,崩溃中,谢谢解答。继续摸索。。。
xiaoluhelu 2016-05-05
  • 打赏
  • 举报
回复
英文环境下是英文包,中文环境下是中文包,已经实现,谢谢SXJIAKE回复。 但我现在又有了新的问题,不知道为什么,安装后的程序图标不是我设定的那个,没找到原因,大神们帮帮忙
「已注销」 2016-05-04
  • 打赏
  • 举报
回复
NSIS 里安装段 Section 可以写很多的。通常都会有一些公共组件,与语言无关的:
# 在 Section 名字前面加上 "-" 表示隐藏不可见。当然,你也可以留空。
# (仅当设置显示组件选择页面时才能体现作用。如果不显示组件,那隐藏也就没有意义。)
Section "-公共组件" SEC_COMMON
    # 此处省略
    File ...
SectionEnd
还有一些语言文件之类的:
# /o 默认不打勾不安装,即使其不可见。
Section /o "-中文语言" SEC_LANG_CH
    # 此处省略
    File ...
SectionEnd
# /o 默认不打勾不安装,即使其不可见。
Section /o "-英文语言" SEC_LANG_EN
    # 此处省略
    File ...
SectionEnd

Function .onInit
    # 显示语言选择对话框,让用户选择安装语言:
    !insertmacro MUI_LANGDLL_DISPLAY
    # 如果不显示,由安装包自动检测语言

    # 你的其他脚本...

    # 根据 $LANGUAGE 判断当前安装包语言
    # 简体中文语言则选择中文语言包
    # 如果让用户选择语言则应放在选择之后
    ${If} $LANGUAGE = 2052
        # 选中中文语言,即打勾并安装,即使其不可见。
        SectionGetFlags ${SEC_LANG_CH} $0
        IntOp $0 $0 | ${SF_SELECTED}
        SectionSetFlags ${SEC_LANG_CH} $0
    ${Else}
        # 选中英文语言,即打勾并安装,即使其不可见。
        SectionGetFlags ${SEC_LANG_EN} $0
        IntOp $0 $0 | ${SF_SELECTED}
        SectionSetFlags ${SEC_LANG_EN} $0
    ${EndIf}
FunctionEnd
轻狂志的这个版本被称为最好的NSIS软件打包工具,非常值得拥有。其他版本可以无视了。 NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System) 的缩写,它是一个Open Source的Windows系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。NSIS通过它的脚本语言来描述安装程序的行为和逻辑的,因为它基于脚本文件,所以你可以完全控制你的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个普通的程序语言——但它是为安装程序这类应用所设计的。 在此对蓝色网际、贾可、gfm688、X-Star、Zhfi、Ansifa、水晶石、星空不寂寞、似水年华等大神为NSIS在国内的普及所作出的贡献致以崇高的敬意! 特点: 开销小,一个完整功能的安装程序仅需要34k的额外开销。 支持大多数Windows平台,包括:Windows 9.x、Windows NT、Windows 2000、Windows XP、Windows 2003、Windows 7、Windows 10。 支持三大压缩算法: Zlig、BZips、LZMA。 支持脚本。 支持多语言。 支持安装界面定制。 提供可扩展的插件接口。 支持网络安装、补丁。 支持无人值守的安装模式。 此外,NSIS的license允许任何用途免费使用。 增强版特点: 此版本主要进行了以下增强: 1、集成了网络上能够收集到的大部分插件及应用示例; 2、集成了 VNISEdit v2.03(.nsi默认)和 NotePad2 两个脚本编辑器(.nsi右键); 3、集成了 NSISDialogDesigner自定义页面设计工具; 4、集成了 NSIS用户手册和 NSIS图文教程集锦。

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧