论坛风格切换切换到宽版
  • 81890阅读
  • 218回复

【原创】NSIS安装制作基础教程[初级篇] + NSIS 简体 [复制链接]

上一主题 下一主题
离线蓝色网际
发帖
1795
金钱
0
威望
0
只看该作者 50 发表于: 2005-02-01
QUOTE(wq99 @ 2005年02月01日 15时04分)
各位好:我是新手,
我在看function时,没发现参数的传入。
可能我的思维方式不对。
function Fname
functionend
参数应该怎么传呢?

NSIS 的函数其实是个假函数,并不能像 C++ 那样传递参数,如果你需要传递参数请使用堆栈。
一个典型的例子请看附录的 Get parent directory。
不要在 PM 里问问题,PM 不是用来问问题的。
离线colonel
发帖
8
金钱
0
威望
0
只看该作者 51 发表于: 2005-02-01
那如果一个Edit里的内容发生变化,另一个组件也跟关变化,这个Edit 的Change事件去写呢



PS:可能我习惯于使用delphi所以有时说到的组件事件名称与你不一样吧
离线蓝色网际
发帖
1795
金钱
0
威望
0
只看该作者 52 发表于: 2005-02-01
QUOTE(colonel @ 2005年02月01日 18时07分)
那如果一个Edit里的内容发生变化,另一个组件也跟关变化,这个Edit 的Change事件去写呢



PS:可能我习惯于使用delphi所以有时说到的组件事件名称与你不一样吧

你可以参考一下 NSIS\Contrib\InstallOptions\testnotify.nsi
不要在 PM 里问问题,PM 不是用来问问题的。
离线wq99
发帖
3
金钱
0
威望
0
只看该作者 53 发表于: 2005-02-02
File "${LOCATION}\$R0"
$R0是一个文件,结果
说没有这个文件,
File "${LOCATION}\123.exe"
那就可以了。

奇怪,我第一句写错了么?
File "${LOCATION}\${R0}"这样也不对。
离线蓝色网际
发帖
1795
金钱
0
威望
0
只看该作者 54 发表于: 2005-02-02
QUOTE(wq99 @ 2005年02月02日 13时02分)
File "${LOCATION}\$R0"
$R0是一个文件,结果
说没有这个文件,
File "${LOCATION}\123.exe"
那就可以了。

奇怪,我第一句写错了么?
File "${LOCATION}\${R0}"这样也不对。

你可以先在资源管理器里看看是否有 $R0 这个文件。一般来说很少有这种不带扩展名的奇怪文件,况且不带扩展名的话很容易被当作目录来处理。

一般来说编译器的报告是正确的,这里有一个测试脚本,你可以试试看。
附件: test.zip (0 K) 下载次数:31
不要在 PM 里问问题,PM 不是用来问问题的。
离线wq99
发帖
3
金钱
0
威望
0
只看该作者 55 发表于: 2005-02-02
QUOTE(蓝色网际 @ 2005年02月02日 13时25分)
QUOTE(wq99 @ 2005年02月02日 13时02分)
File "${LOCATION}\$R0"
$R0是一个文件,结果
说没有这个文件,
File "${LOCATION}\123.exe"
那就可以了。

奇怪,我第一句写错了么?
File "${LOCATION}\${R0}"这样也不对。

你可以先在资源管理器里看看是否有 $R0 这个文件。一般来说很少有这种不带扩展名的奇怪文件,况且不带扩展名的话很容易被当作目录来处理。

一般来说编译器的报告是正确的,这里有一个测试脚本,你可以试试看。

啊~对不起啊,我没说仔细。

$R0是变量,是从堆栈里Pop出来的。
即123.exe.
File "${LOCATION}\$R0"
即File "${LOCATION}\123.exe"

========
Push "123.exe"
……
Function InstallOne
    Pop $R0
    DetailPrint $R0
    SetOutPath "$INSTDIR"
    File "${LOCATION}\$R0"
    ExecWait '"$INSTDIR\$R0"'
FunctionEnd
=======
DetailPrint $R0
是可以打印出 123.exe
改成File "${LOCATION}\123.exe"是可以的。
怎么用$R0就不行了呢?
离线蓝色网际
发帖
1795
金钱
0
威望
0
只看该作者 56 发表于: 2005-02-02
File 指令后面的文件必须是编译时当前系统存在的文件,而 $R0 要在编译后才有值当然会出错。变量是运行时才有效的。
如果你想改名的话请使用 File "/oname=目标文件" "本地文件"
oname= 后面的目标文件可以用变量。
不要在 PM 里问问题,PM 不是用来问问题的。
离线蓝色网际
发帖
1795
金钱
0
威望
0
只看该作者 57 发表于: 2005-02-05
2.05 released,更改了很多区段管理的指令
Changes:
New/Changed Commands

  * Renamed SubSection and SubSectionEnd to SectionGroup and SectionGroupEnd
  * SectionSetFlags, when used on a section group, toggles its children too
  * SectionSetText works better with variables (parses immediately and treats
    an empty variable as an empty string) (这个问题很久就提过了,到现在才解决)
  * SetCurInstType works without the components page

Minor Changes

  * Added Breton translation
  * AdvSplash: Fixed double delay time in some cases
  * Documentation fixes and enhancements (including patch #1098454)
  * Fixed case sensitive name comparison with File /x, when not using
    wildcards
  * Fixed extraction status ending prior to 100%
  * Fixed negative values of available space in the directory page (bug
    #1114876)
  * Fixed system.nsi example crash (bug #1102255)
  * Fixed unused label warnings with Library macros
  * Improved some error messages
  * InstallOptions 2.42: Added an image displaying example, added TRANSPARENT
    flag for BITMAP fields (RFE #1079715 - funded by Chris Morgan)
  * Invisible sections weren't always affected by a change of the
    installation type (bug #1045722)
  * Language file fixes
  * Made pages refresh after an aborted leave function
  * Partially selected section groups can now be toggled


http://sourceforge.net/project/showfiles.p...lease_id=302407
不要在 PM 里问问题,PM 不是用来问问题的。
离线arthur810
发帖
43
金钱
0
威望
0
只看该作者 58 发表于: 2005-02-12
为什么我的“安装程序语言”里面是空的
如图,请指教,谢谢
注:WinXP SP2简体中文系统
离线zhp0083
发帖
177
金钱
0
威望
0
只看该作者 59 发表于: 2005-02-12
我意思是说脚本里打命令
!insertmacro MUI_LANGUAGE "SimpChinese"
信摇滚得永生
个人diy