在 NSIS 中,如何使用用户变量重命名或复制文件?
In NSIS, how can I rename or copy a file with a user variable?
我设法创建了一个基本安装程序,但我不喜欢 exe 名称中的版本号。
我想将文件重命名为更通用的文件,例如 myapp.exe 而不是“myapp_v1.2.3.exe”
看了文档,对user变量的用法不是很清楚。我总是收到一个错误,告诉我 $var 名称不存在。
Section "Godot" SecGodot
SetOutPath "$INSTDIR"
;ADD YOUR OWN FILES HERE...
StrCpy $originalName "Godot_v3.3.4-stable_mono_win64.exe"
StrCpy $exeName "Godot.exe"
File "${originalName}" #<----------- ERROR HERE : File: "${originalName}" -> no files found.
Rename "${originalName}" "{$exeName}"
SetOutPath "$INSTDIR\GodotSharp"
File /nonfatal /a /r "GodotSharp\"
;Store installation folder
WriteRegStr HKCU "Software\Godot" "" $INSTDIR
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS$StartMenuFolder"
CreateShortcut "$SMPROGRAMS$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
CreateShortcut "$SMPROGRAMS$StartMenuFolder\Godot.lnk" "$INSTDIR${exeName}"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
感谢您的帮助
只有在终端用户机器上 运行 时才能扩展变量。 File
需要您机器上的文件名。为此,请使用 define:
!define foo "bar"
File "${foo}.exe" ; bar.exe
这不会帮助您更改名称,它只是说明如何使用定义。
在这种特定情况下您不需要定义,您可以设置特定的输出名称:
SetOutPath $InstDir
File "/oname=Godot.exe" "Godot_v3.3.4-stable_mono_win64.exe"
我设法创建了一个基本安装程序,但我不喜欢 exe 名称中的版本号。
我想将文件重命名为更通用的文件,例如 myapp.exe 而不是“myapp_v1.2.3.exe”
看了文档,对user变量的用法不是很清楚。我总是收到一个错误,告诉我 $var 名称不存在。
Section "Godot" SecGodot
SetOutPath "$INSTDIR"
;ADD YOUR OWN FILES HERE...
StrCpy $originalName "Godot_v3.3.4-stable_mono_win64.exe"
StrCpy $exeName "Godot.exe"
File "${originalName}" #<----------- ERROR HERE : File: "${originalName}" -> no files found.
Rename "${originalName}" "{$exeName}"
SetOutPath "$INSTDIR\GodotSharp"
File /nonfatal /a /r "GodotSharp\"
;Store installation folder
WriteRegStr HKCU "Software\Godot" "" $INSTDIR
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS$StartMenuFolder"
CreateShortcut "$SMPROGRAMS$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
CreateShortcut "$SMPROGRAMS$StartMenuFolder\Godot.lnk" "$INSTDIR${exeName}"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
感谢您的帮助
只有在终端用户机器上 运行 时才能扩展变量。 File
需要您机器上的文件名。为此,请使用 define:
!define foo "bar"
File "${foo}.exe" ; bar.exe
这不会帮助您更改名称,它只是说明如何使用定义。
在这种特定情况下您不需要定义,您可以设置特定的输出名称:
SetOutPath $InstDir
File "/oname=Godot.exe" "Godot_v3.3.4-stable_mono_win64.exe"