NSIS安装程序在编译时无法找到现有文件

时间:2014-11-04 01:44:23

标签: installer nsis

所以我一直在尝试使用NSIS为我的游戏构建一个安装程序。在大多数情况下它工作正常但只是注意到它似乎无缘无故地跳过某些文件。或者我没理由弄清楚。

起初我使用此行收集源文件夹中的所有文件:

File /r "${NSISDIR}\game\source\*.*"

然而,我注意到这并没有得到一切。当然,它找到了所有子文件夹并保持了层次结构的正确性。对它跳过的东西似乎没有任何押韵或理由。然后我尝试分别列出所有文件和目录,找出原因。例如:

File "${NSISDIR}\OWTD-DE\source\pygame.math.pyd"

这会产生以下错误:

File: "C:\Program Files (x86)\NSIS\game\source\pygame.math.pyd" -> no files found.

但是该文件存在,我可以在源文件夹中看到它。这是所有丢失文件的情况。起初我以为它可能是名称中的两个句点,但是各种文件都有这个命名约定,并且它们被添加得很好。我无法弄清楚如何识别这些文件。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

${NSISDIR}是用于访问Contrib子文件夹中的UI资源的定义,您不应该将文件放在那里。您的源文件不应该在Program Files中,只有安装的文件应该位于那里。此外,在64位系统上有两个Program Files文件夹,Windows中有一些与%ProgramFiles%相关的兼容性黑客,因此将源文件放在那里并不是最佳的。仅仅因为看到那个文件并不意味着它实际上在程序文件中,它可能是UAC Virtualization / VirtualStore欺骗你......

通常你会将你的.nsi保存在与其他文件相同的目录树中,这样你就可以使用相对路径,但如果你真的想要也可以使用定义:

!define MYSOURCE "c:\foo\bar"

...

Section
File /r "${MYSOURCE}\*.*"
SectionEnd

如果它仍然遗漏某些文件,我建议您尝试使用Process Monitor,这样您就可以看到低级详细信息...

答案 1 :(得分:0)

奇怪的是,这个过程在Windows Home 64-Bit上运行得不是很好,但是在Windows Professional 64-Bit上运行得很好。我不确定这是NSIS本身的问题还是什么,但除了OS之外,两者之间没有什么不同。这两个操作系统之间确实没有太大区别。但是,两者之间的一些配置差异可能是真正的问题。

虽然标记已解决,但我不确定实际问题和解决方案是什么。