- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常简单的 NSIS 脚本,允许用户选择他们想要安装的组件,但如果他们没有选择任何内容,我需要一种方式说“请选择一个组件”。
这是脚本:
# Based on the one-section example
# http://nsis.sourceforge.net/Examples/one-section.nsi
!include "sections.nsh"
Name "Humira & You"
OutFile "Humira & You - September 2012.exe"
RequestExecutionLevel user
Page components
Page instfiles
Section /o "Rheumatoid Arthritis" P1
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Rheumatoid Arthritis.msi"
SectionEnd
Section /o "Psoriatic Arthritis" P2
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Psoriatic Arthritis.msi"
SectionEnd
Section /o "Ankylosing Spondylitis" P3
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Ankylosing Spondylitis.msi"
SectionEnd
Section /o "Axial Spondyloarthritis" P4
File "/oname=$pluginsdir\Setup.msi" "setupfiles\Humira and you - Axial Spondyloarthritis.msi"
SectionEnd
Section ; Hidden section that runs the show
DetailPrint "Installing selected application..."
SetDetailsPrint none
ExecWait '"msiexec" /i "$pluginsdir\Setup.msi"'
SetDetailsPrint lastused
SectionEnd
Function .onInit
Initpluginsdir ; Make sure $pluginsdir exists
StrCpy $1 ${P2} ;The default
FunctionEnd
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${P1}
!insertmacro RadioButton ${P2}
!insertmacro RadioButton ${P3}
!insertmacro RadioButton ${P4}
!insertmacro EndRadioButtons
FunctionEnd
我环顾四周,发现了这个例子,http://nsis.sourceforge.net/Useful_InstallOptions_and_MUI_macros#Macro:_CHECKBOXCHECKER ,但对于我想要的东西来说似乎过于复杂。 NSIS里有没有办法说:
if ($1.selectedIndex > -1) {
// continue
} else {
MessageBox.Show("Please select");
}
谢谢,格雷格。
最佳答案
离开组件页面时,您可以使用回调函数来检查是否选择了某个组件。
这是我在设置中使用的一段代码。我使用一个小宏在变量中总结所选组件。如果没有,则该变量为空。我使用 PageEx
block 将回调函数关联到组件页面(因为离开回调是第三个,所以我对前两个函数使用虚拟函数)
替换
Page components
由
PageEx components
PageCallbacks DummyFunc DummyFunc componentsLeave
PageExEnd
保留 .onSelChange
回调以处理独占选择,然后将其添加到脚本末尾:
!define SECTIONCOUNT 3 ; total -1
;SaveSections adds one bit to the given variable for each selected component
!macro SaveSections VAR
StrCpy ${VAR} 0
${ForEach} $R0 ${SECTIONCOUNT} 0 - 1
IntOp ${VAR} ${VAR} << 1
${If} ${SectionIsSelected} $R0
;${DEBUG} "Section $R0 checked"
IntOp ${VAR} ${VAR} + 1
${EndIf}
${Next}
!macroend
Function DummyFunc
FunctionEnd
Function componentsLeave
!insertmacro SaveSections $2
${if} $2 = 0
MessageBox MB_OK|MB_ICONEXCLAMATION "Select something !" /sd IDOK
Abort
${endif}
FunctionEnd
关于NSIS - 验证单选按钮选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12279706/
我有一个安装程序,一个编译好的 NSIS 脚本,它首先检查我的应用程序的另一个版本是否正在系统上运行。如果存在另一个实例,则它首先触发静默卸载,然后继续安装新实例。 我使用 ExecWait 在静默模
我必须比较当前文件的版本和已经安装在 NSIS 安装程序中的版本。我知道版本号是字符串,但我在几个地方读到,如果逻辑操作需要,NSIS 会自动将字符串转换为整数。 仅出于测试目的,我编写了以下脚本:
我们有一个包含多个组件的安装程序,每个组件都有自己的部分。我试图找出我们现有的代码如何实际设置每个部分的大小。我们有 3 个组件,如果选中/取消选中,它们将更新组件页面上的“所需空间”值。 我当前添加
我正在努力将图像添加到用NSIS/MUI2编写的安装程序的第一页中。 这是我正在使用的代码的精简版。 !include "MUI2.nsh" !define MUI_HEADERIMAGE !
NSIS具有您在脚本中定义的Name变量: Name "MyApp" 它定义了安装程序的名称,并显示为窗口标题等。 有没有办法将.NET版本号从我的主EXE中拉出来并将其附加到名称中? 这样我的安装程
当我运行静默 NSIS 安装程序时(从控制台,如 installer.exe/S/D=C:\Foo),它会立即移至后台。我想等到它完成安装后再做其他事情。我可以传递一个标志来告诉安装程序要阻止吗? 最
字符串 "jdbc:postgresql://localhost:5432/DatabaseName" 我的要求是只获得 数据库名称 从上面的字符串。 我试过下面的链接,但没有用。 ${Explode
我需要使用 SVN 标签 $Revision$在 NSIS 脚本中。显然,NSIS 编译器将这个 $Revision 理解为一个变量。我怎么能逃过这块钱呢? 我试过反斜杠,它不起作用。 最佳答案 Me
我有一个 NSIS 脚本要求用户提供安装目录,但我想要求用户在新页面上再提供一个临时目录。有没有一种方法可以使用 nsDialogs 添加一个新页面,它为例如 指定一个临时目录 C:\temp 还让他
我正在使用 VS 2010 为 NSIS 构建一个插件,我很想设置该项目,以便从简单的 NSI 文件自动构建测试设置。 一切似乎都很好,只是我不知道如何让 NSIS 在我的项目的输出文件夹而不是 C:
如果选择了某个组件,我想提示用户提供额外信息,但我不确定如何检查是否选择了给定的组件。好像http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.13.2
在我的安装程序中,我想创建一个空文件。在 linux 中,我会使用 touch 命令,但是在 NSIS 中最简单的方法是什么? 最佳答案 #Compile time !appendfile "$%te
在构建我的安装程序时,我可以让用户通过调用来选择要安装的部分 !insertmacro MUI_PAGE_COMPONENTS 如何在卸载程序中提供类似的功能? 我知道如何自己制作这些部分(感谢 th
我试图通过从外部传递版本号来概括一个安装文件。我希望能够做到这一点: makensis myscript.nsi parameter=value 然后读取脚本中的参数,以便使用相同的脚本生成不同版本的
我正在尝试使我的设置脚本模块化。我根据要求从主安装脚本中调用 setup exe。我想将命令行参数传递给被调用的 exe。有人可以告诉我如何访问被调用脚本中的命令行参数。 提前致谢。 最佳答案 您可以
我使用 NSIS 开发了一个安装程序.每次重新安装应用程序时,我都想创建现有数据库文件的备份。 如何使用以下格式“当前日期时间”重命名这些数据库文件(例如:201003101140 表示 2010-0
有人可以帮我删除 NSIS 安装程序中的“Nullsoft”标签吗?请引用下图。 最佳答案 BrandingText " " 关于nsis - 从 NSIS 安装程序中删除品牌,我们在Stack Ov
如何确定我的 NSIS 函数是否有可用的互联网连接? 我看到了 Intec 插件,但我没有找到怎么做 谢谢。 最佳答案 你应该为此使用 Dailer 插件。 试试这个: Dialer::GetConn
我是 NSIS 脚本的新手。我想创建一个自定义安装程序,它将环绕另一个安装程序 (FEKO)。此方法Embedding other installers NSIS 网站上的建议对我不起作用 脚本编译正
我对 NSIS 很陌生。 我正在尝试请求管理员权限以运行安装程序,因为它与注册表有些困惑。 我对“RequestExecutionLevel”和“MULTIUSER_EXECUTIONLEVEL”的问
我是一名优秀的程序员,十分优秀!