【问题标题】:nsis adds empty folders to the installernsis 将空文件夹添加到安装程序
【发布时间】:2016-03-18 14:33:14
【问题描述】:

下面的File

; Install common files
SetOutPath "${GameDir}\Mopy"
File /r /x "*.bat" /x "*.py*" /x "w9xpopen.exe" /x "Wrye Bash.exe" "Mopy\*.*"

过滤掉一些包含 python 文件的目录,但在我运行安装程序时仍然会创建这些目录(虽然是空的,或者包含空的子目录)。这些文件夹需要包含在安装程序中(如果我在“编译时”得到正确的术语),因为安装程序可以选择安装程序的 python 版本。我想不出不添加这些空文件夹的方法。是否有一些通配符可以用于该目的,或者我应该在安装时删除文件(使用 RMDir ?)?

【问题讨论】:

    标签: wildcard nsis


    【解决方案1】:

    我会说你有两个选择,一个确实是RMDir,如果你同意它可能会删除用户创建的空文件夹。

    另一种选择是不使用File /r ...,而是使用!system 来执行批处理文件之类的操作,该批处理文件会生成带有单独File 指令的文本文件,您可以使用!include。它看起来像这样:

    !tempfile files
    !system '"mygeneratefilelist.bat" "${files}"'
    !include "${files}"
    !delfile "${files}"
    

    并且批处理文件将使用FOR 和/或DIR 列出和ECHO File 命令到%1...

    【讨论】:

    • 哦,谢谢 - 我会选择 RMDirs,但这真的是它看起来还是我在这里缺少的东西?即使是空的,它也会添加文件夹?有没有办法告诉它不要? nsis 菜鸟在这里...
    • 我认为您也可以使用 /x 排除目录,但仅此而已。
    • 嗯——让我试一试
    • 是的 /x "Mopy\bash\bosh\*.*" 为我做的 - 太好了,我讨厌 RMDir,以免用户在那里有任何有价值的东西,我不得不警告等等 - 再加上这是一个黑客,我真正想要的不包括那些目录。 ``/x "Mopy\bash\bosh"` 会有什么不同吗?
    • RMDir 只删除空目录,因此非常安全,另一方面,RMDir /r 将删除整个目录树。我不记得 /x 是如何工作的具体细节,所以你只能尝试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2011-02-23
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多