我有一个需要添加到安装程序的目录结构.我有3个不同版本的安装脚本,其中一个是升级脚本,需要在安装目录中排除某个文件和子目录.所以我做了以下事情:
File /r /x ${InputDir}\data\someFile.xml /x ${InputDir}\data\derbydb\runtime\*.* ${InputDir}\*.*
Run Code Online (Sandbox Code Playgroud)
xml文件和derbydb目录已经存在(因为这是一个升级),因此我不想覆盖它们.然而,在运行安装程序时,我清楚地看到两个文件都被覆盖,而且使用7zip查看生成的setup.exe也表明它们已被添加.人们可能刚刚打过电话
File /r ${InputDir}\*.*
Run Code Online (Sandbox Code Playgroud)
那么这里出了什么问题?我希望NSIS有更好的文档或列出其命令参数/语法的警告.(/咆哮)
小智 7
NSIS手册(http://nsis.sourceforge.net/Docs/Chapter4.html)第4.9.1.5节文件包含以下内容:
使用/ x开关排除文件或目录.
我尝试使用不同的变体,但只有一个工作:
SetOutPath $INSTDIR
File /r /x Config ..\MyProgram\*.*
Run Code Online (Sandbox Code Playgroud)
其中"Config"是目录"MyProgram\Plugins\Config".NSIS只按名称搜索,设置任何子文件夹都是错误的(例如"/ x Plugins\Config"或"/ x $ INSTDIR\MyProgram\Plugins\Config \").有一个缺点:如果在不同的目录中有相同的文件夹,使用/ r开关,将搜索匹配的目录和文件.
我认为问题在于您不应该指定文件的完整路径来仅排除模式,因此换句话说,命令应该如下所示:
File /r /x data\someFile.xml /x data\derbydb\runtime\*.* ${InputDir}\*.*
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7139 次 |
| 最近记录: |