我正在创建一个安装程序。安装完成后,我必须重新启动系统。重启后,我需要在默认浏览器中打开一个网页。我怎么能用nsis脚本做到这一点?
答案 0 :(得分:1)
这不是一个好主意,你不应该这样做恕我直言。
如果您仍坚持这样做,那么您需要决定要定位的用户。任何用户?运行安装程序的用户?只有管理员?您无法控制重启后哪个用户登录。
如果您只想为管理员运行它,那么您可以使用Slappy建议的RunOnce解决方案,因为HKLM RunOnce仅由管理员执行。
如果要为任何用户运行它,则必须在共享的启动菜单启动文件夹中放置一些内容。请务必使用AccessControl plug-in为所有人Delete
授予(WD)
次访问权限。 (我们不能在注册表中使用Run键,因为我们不能将ACL更改应用于值,只能应用于键)。您只能在安装程序运行提升的情况下执行此操作,但我认为这是因为只有提升的安装程序才能进行需要重新启动的全局更改。您必须使用NSIS中的SetShellVarContext all
来访问共享的$SMStartup
文件夹。
您可以创建某个快捷方式或将程序本身置于启动状态,重要的是它会自行删除。您可以使用简单的批处理文件来逃避:
@echo off
start http://stackoverflow.com/questions/tagged/nsis
del "%~f0"
答案 1 :(得分:0)
您可以创建两个安装程序:
1)您的主安装程序 - 它会执行您的所有操作,最后它会写入注册表项并复制文件以在重新启动后运行:
WriteRegStr "HKLM" "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" "Program Name" "$INSTDIR\File.exe"
SetOutPath "$INSTDIR"
File "File.exe"
File.exe 是第2点的应用程序。最好将它保存在您的应用程序中。安装文件夹。
2)安装程序(或更好地说NSIS中的简单应用程序)在重新启动后运行并打开网站(并立即退出):
Function .onInit
ExecShell "open" "http://www.visual-installer.com/" SW_SHOWNORMAL
Quit
FunctionEnd
(只是脚本片段)