【发布时间】:2014-11-09 16:17:18
【问题描述】:
我尝试创建一个安装程序来安装应用程序。 基本的东西工作正常,但我有问题,当涉及到简单地复制现有文件时,该文件位于 Program Files 文件夹的某个子文件夹中。 这背后的场景是应用程序具有不同的版本和许可证文件。 安装应用程序后,安装程序会查找现有文件,如果存在,则应将该许可证文件复制到 $INSTDIR/license 文件夹。
例子:
C:\Program Files (x86)\MyApp\Ver1.0\license\ // here's the location of old license file
C:\Program Files (x86)\MyApp\Ver2.0\license\ // here to put the old license file
以下部分浓缩为相关内容:
Section "License of other Version"
IfFileExists '$PROGRAMFILES\MyApp\Ver1.0\license\some_license.slc' beginLicense endLicense
Goto endLicense
beginLicense:
MessageBox MB_OK "We have found an old license file. Do you wanna to use it for current installation ?"
CreateDirectory "$INSTDIR\license"
CopyFiles "$PROGRAMFILES\MyApp\Ver1.0\license\some_license.slc" $INSTDIR/license/some_license.slc"
endLicense:
MessageBox MB_OK "There were no license found."
SectionEnd
编译运行良好,但安装过程在尝试复制文件时显示错误。但它没有给出进一步的解释,为什么它失败了。 我也尝试使用 File 指令,但这会产生其他错误,因为使用了 file 指令中的常量(找不到文件,以及那种错误),甚至脚本也无法编译。 我也尝试使用宏,这里在stackoverflow的另一个问题中提到(对不起,没有链接了),但它也对我不起作用。 我在做什么错,是否不允许在 CopyFile 指令中使用常量? 任何帮助表示赞赏。
【问题讨论】:
-
使用 SysInternals Process Monitor 观察安装程序运行时读取的文件。另请注意,您的引号不正确,斜杠是 / 但应该是 \.
-
做到了!那个愚蠢的错误,我做到了......你是对的,在将斜杠改为反斜杠之后,它起作用了......非常感谢!