当您启动使用WriteUninstaller编写的uninstall.exe时,uninstall.exe在进程列表“Au_.exe”或“Bu_.exe”中命名(取决于您启动的exe的数量,它将通过字母表)。
这是我的安装部分代码
putIfAbsent()
,卸载部分为
Section "Install"
WriteRegStr HKLM "${regkey}" "Install_Dir" "$INSTDIR"
WriteRegStr HKLM "${uninstkey}" "DisplayName" "${name}"
WriteRegStr HKLM "${uninstkey}" "DisplayIcon" '"$INSTDIR\icon.ico"'
WriteRegStr HKLM "${uninstkey}" "UninstallString" '"$INSTDIR\${uninstaller}"'
; Remove all application files copied by previous installation
RMDir /r "$INSTDIR"
SetOutPath $INSTDIR
; Include all files from /build directory
File /r "${src}\*"
; Create start menu shortcut
CreateShortCut "$SMPROGRAMS\${name}.lnk" "$INSTDIR\${exec}" "" "$INSTDIR\icon.ico"
WriteUninstaller "${uninstaller}"
SectionEnd
任何人都可以帮助我
答案 0 :(得分:0)
目前无法自定义此卸载程序文件的名称,但我确实将其从%UNIQUE%u_.exe
更改为Un_%UNIQUE%.exe
以便下一版本的NSIS 3 ...
答案 1 :(得分:0)
我找到了解决方案, 当启动卸载程序时,nsis会自动将uninstaller.exe复制到临时文件夹,并使用此exe开始卸载,这就是为什么它的名称是au_.exe,eu_.exe等,这里是你必须手动将uninstall.exe复制到temp的修复程序文件夹或任何文件夹,但最好是临时文件,然后从那里运行它将取你的uninstaller.exe的名称,它可以是你想要的任何名称,这里是代码
!define uninstaller "Testuninstaller.exe"
Function un.onInit
${nsProcess::FindProcess} "${uninstaller}" $R4
${If} $R4 <> 0
CopyFiles /SILENT "$INSTDIR\${uninstaller}" "$temp\${uninstaller}"
ExecWait '"$temp\${uninstaller}" _?=$INSTDIR'
Quit
${EndIf}
${nsProcess::Unload}
FunctionEnd
现在你的名字在这个过程中将是Testunistaller.exe