【发布时间】:2016-03-15 22:29:12
【问题描述】:
我正在运行 Windows 8.1 并使用 NSIS 为我的 java 程序创建启动器。为了尝试编写脚本,我制作了一个丑陋的 A.ico 并将其用于我的 Program.exe。现在我制作了一个漂亮的 B.ico,并使用相同的脚本尝试将其设置为我的 Program.exe 的图标。
问题是即使我相应地更改了脚本,A.ico 仍然用于 Program.exe,我似乎无法更改它。这太奇怪了,因为如果我将输出 .exe 的名称更改为例如OtherProgram.exe 选择了正确的 B.ico。如果我再将.exe重命名为Program.exe,图标会在我眼前切换回A.ico!!
我错过了什么吗?我的系统是否保存了每个名为 Program.exe 的文件都必须有图标 A.icon,只是因为我在第一个脚本中使用了它?
Name "Program"
Caption "LMX Launcher"
Icon "hidden\B.ico"
OutFile "Program.exe"
RequestExecutionLevel user
!include "FileAssociation.nsh"
SilentInstall silent
AutoCloseWindow true
ShowInstDetails nevershow
Section ""
Call GetJRE
Pop $R0
StrCpy $0 '$R0 -jar hidden\getdown.jar hidden\'
SetOutPath $EXEDIR
ExecWait $0
${unregisterExtension} ".lm" "LM-fil"
${registerExtension} "Program.exe" ".lm" "LM-fil"
SectionEnd
Function GetJRE
Push $R0
Push $R1
ClearErrors
StrCpy $R0 "$EXEDIR\jre\bin\javaw.exe"
IfFileExists $R0 JreFound
StrCpy $R0 ""
ClearErrors
ReadEnvStr $R0 "JAVA_HOME"
StrCpy $R0 "$R0\bin\javaw.exe"
IfErrors 0 JreFound
ClearErrors
ReadRegStr $R1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
ReadRegStr $R0 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$R1" "JavaHome"
StrCpy $R0 "$R0\bin\javaw.exe"
IfErrors 0 JreFound
StrCpy $R0 "javaw.exe"
JreFound:
Pop $R1
Exch $R0
FunctionEnd
【问题讨论】:
标签: java icons exe nsis file-association