在 IF ELSE 块中包含 InstallDir

2023-12-20

我尝试使用以下代码

; The default installation directory
InstallDir $PROGRAMFILES\${PRODUCT_NAME}

to

!include x64.nsh
${If} ${RunningX64}
    ; The default installation directory
    InstallDir $PROGRAMFILES\${PRODUCT_NAME}
${Else}
    ; The default installation directory
    InstallDir $PROGRAMFILES64\${PRODUCT_NAME}
${EndIf}

我收到以下错误:-

!insertmacro: _If
Error: Can't add entry, no section or function is open!
Error in macro _RunningX64 on macroline 2
Error in macro _If on macroline 9
Error in script "C:\Users\yccheok\Desktop\mysoftware.nsi" on line 17 -- aborting creation process

有什么方法可以设置该值InstallDir,在 if else 块内?


如果您需要动态 $InstDir,则根本不应该使用 InstallDir,而应在 .onInit 中设置 $InstDir:

Installdir ""
!include LogicLib.nsh
!include x64.nsh

Function .onInit
${If} $InstDir == "" ; /D= was not used on the command line
    ${If} ${RunningX64}
        StrCpy $InstDir "c:\foo"
    ${Else}
        StrCpy $InstDir "c:\bar"
    ${EndIf}
${EndIf}
FunctionEnd

您当前的 if else 块没有任何意义,因为您选择的是 x64 上的 32 位程序文件和 x86 上的 64 位程序文件!在 x86 上使用 $PROGRAMFILES64 是可以的,所以如果你总是想要“真正的”程序文件,你可以在所有平台上使用 $PROGRAMFILES64...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 IF ELSE 块中包含 InstallDir 的相关文章

  • Qt之NSIS打包

    一 Qt发布方式 Qt发布的时候 通常使用两种方式 1 静态编译 把相关联的库一并引入可执行程序 虽然发布简单 但可执行程序较大 2 动态编译 把相关联的库 以dll的形式引用 不包含到可执行程序 发布不方便 但可执行程序较小 二 NSIS
  • NSIS脚本学习:判断版本并安装.NET Framework运行环境

    前言 目前开发的程序以基于 net的应用程序为主 程序开发好后 需要进行安装包的生成 及setup文件的生成 常见的是NSIS工具 之前一直用的单文件打包工具 不适合将运行环境加进去 因此开始使用更高版本的NSIS 3 06 关于判断 NE
  • 访问 NSIS 中的命令行参数

    我正在尝试使我的设置脚本模块化 我根据要求从主安装脚本中调用安装 exe 我想将命令行参数传递给被调用的 exe 有人可以告诉我如何访问正在调用的脚本中的命令行参数吗 提前致谢 您可以使用GetOptions功能 FileFunc nsh必
  • 使Windows刷新图标缓存

    我真的很喜欢 KDE SC 4 的氧气外观 我编写了一个程序将这些图标应用到 Windows 该程序是用 NSIS 编写的 目前几乎功能齐全 但是 我发现让 Windows 意识到图标更改的唯一方法是终止 explorer exe 删除图标
  • NSIS 获取产品版本

    我正在尝试使用 NSIS 2 49 获取 ProductVersion 有人有如何获取产品版本的示例吗 GetDllVersion C data Some exe R0 R1 the two values were read during
  • NSIS 系统 kernel32::LoadLibrary 不搜索 Outdir 或 Path

    我正在尝试在 NSIS 安装程序中加载并调用 C 库 DLL 的函数 当我尝试加载 DLL 时 发出错误 126 ERROR MOD NOT FOUND 这是我用来测试的最小安装程序脚本 OutFile Main exe ShowInstD
  • 设置在 nsis 安装程序的自定义对话框页面上添加的自定义标签的字体

    如何设置 nsis 安装程序中自定义添加页面上添加的标签的字体 为了创建标签 我使用了这个 nsDialogs Create 1018 var Label NSD CreateLabel 0 0 100 32u PLEASE CHOOSE
  • 在许可证页面上添加复选框和单选按钮

    我正在 Nsis 中编写脚本 我需要在许可证页面上有选项单选按钮以及用于再次确认的复选框 是否可以这样做 因为如果我尝试插入较高优先级的是复选框 而我缺少单选按钮 最好我想只修改许可证页面而不创建自定义页面 感谢您的帮助 选项A 使用修改后
  • 是否可以从 Java 代码调用 Ant 或 NSIS 脚本?

    是否可以在运行时从 Java 代码以编程方式调用 Ant 或 NSIS 脚本 如果是这样 怎么办 You can从 Java 代码调用 ant 脚本 See 本文 http ant apache org manual running htm
  • NSIS 安装程序 - 显示不同的许可证

    我正在尝试修改现有的 NSIS 安装脚本 以允许根据用户是新用户还是现有用户向用户提供不同的许可证文件 我有预先存在的代码 可以检测 onInit 部分中的现有安装 然而 我在尝试使用 NSIS 提供的许可证屏幕时遇到了障碍 例如 Inse
  • 如何在nsis中获取其他应用程序的退出代码

    在我的 nsi 文件中 我正在调用ExecWait INSTDIR application exe 0 在 application exe 中 我返回成功和失败的退出代码 如何捕获 nsi 文件中的那些退出代码 如果执行 ExecWait
  • NSIS - 检查进程是否存在(nsProcess 不工作)

    对于我的 NSIS 卸载程序 我想检查进程是否正在运行 FindProcDLL 在 Windows 7 x64 下无法工作 所以我尝试了 nsProcess 我从网站下载了1 6版本 http nsis sourceforge net Ns
  • 如何写入或读取 XML 配置文件 (.config)

    我必须在安装的后期部分编写一个配置文件 如果存在旧版本的产品 则必须从配置文件中读取 配置文件是 XML 配置文件 config 配置文件将有很多条目 例如
  • NSIS - 检查注册表项值是否存在

    我需要检查注册表值是否存在 我怎样才能做到这一点 我的第一个方法 ReadRegStr 0 HKLM SOFTWARE Microsoft Windows NT CurrentVersion Ports NUL IF 0 MESSAGEBO
  • 如何在 NSIS 中使用 try catch

    您好 我在安装时在 nsis 安装程序中的几台机器上遇到了奇怪的错误 使用 fontreg nsh 安装字体时给出 无效的 win32 文件句柄 我试过谷歌但没有得到这个问题的答案 现在我正在考虑抑制此消息 那么有什么方法可以抑制此消息 或
  • 如何让 NSIS 安装并执行临时目录中的文件?

    我正在使用以下 NSIS 脚本 Name My app wrapper Outfile MyAppSetup exe InstallDir TEMP MyApp Install Function onInit SetSilent silen
  • NSIS 滚动许可证欢迎屏幕

    我的安装程序在与滚动许可证插件交互时遇到问题 安装程序在没有插件的情况下也能很好地工作 这就是插件让我包括的内容 include MUI nsh define MUI PAGE CUSTOMFUNCTION SHOW LicenseShow
  • NSIS:在标签中插入链接

    假设我有以下 nsDialog 标签 单击 接受 即表示我同意示例的许可协议和隐私政策 您可以访问需要使用个人信息的功能 欲了解更多信息 请下载示例的内容政策 我想在此标签中插入链接 如下所示 单击 接受 即表示我同意示例的内容许可协议 h
  • 更改 NSIS 安装程序属性

    我有一个基于 NSIS 的安装程序文件 名为安装程序 当我进入 属性 gt 详细信息 时 缺少许多详细信息 当我运行安装程序时 UAC 请求提升权限 这是可以的 但发布者是 未知 我如何在最终设置这些属性安装程序 最好只更改 NSIS 安装
  • 如何使用 NSIS 脚本检测 Windows 32 位或 64 位?

    我已经为java项目编写了nsis脚本 我的项目中有批处理文件 我已经为常见的Windows 32位和64位编写了批处理文件 安装后我已经使用自动启动批处理文件Exec命令 它在 32 位 Windows 中工作正常 但同时这在 64 位

随机推荐

  • 如何在 R 中绘制具有复数的函数?

    我想在 R 中绘制以下函数 f w 1 1 5 e iw 其中 i 是 1 的平方根 R 可以在绘图中处理复数吗 这应该可以帮助您入门 主要是通过演示 R 用于表示复数和指数函数的符号 f lt function x 1 1 5 exp 0
  • 这个运算符在 django `reduce(operator.and_, query_list)` 中意味着什么

    我正在读这个问题 使用 args 和 kwargs 动态构建 Django 过滤器查询 https stackoverflow com questions 8510057 constructing django filter queries
  • ElasticSearch 的环回连接器

    npm 上至少有两个不同的包可用 环回连接器弹性搜索 https www npmjs com package loopback connector elastic search and 环回连接器 es https www npmjs co
  • 将图像旋转 3*Double.pi/2 使图像不出现(swift3)

    尝试将图像方向旋转 270 度 我可以旋转 90 度并且图像出现 但是当将图像旋转 270 度时什么也没有发生 我添加了两张 90 度和 270 度命令的图片 以使事情更加清晰 extension CIImage var image UII
  • 将兄弟姐妹分组到一个 div 中

    我在一家公司工作 该公司使用编码非常奇怪的电子商务解决方案 我无法直接访问电子商务商店的代码 因为它是由该特定公司托管的 我会废除整个系统 但客户相当依恋它 这就是他们想要的 这是我必须处理的内容 tbody tr td class Pro
  • firebase 和 swift - 此类不符合键值编码 -----

    我知道还有其他类似的问题 但我认为我的问题是如何访问 firebase 而不是插座 因为我的错误位于 IBAction 函数中 该函数可以在错误发生之前调用 IBAction func sign in out tapped sender U
  • 使用 DSC Resource 配置 HKEY_CURRENT_USER 实际上会更新 HKEY_USERS\.DEFAULT

    以下 DSC 声明写入注册表项 HKEY USERS DEFAULT Console 而不是 HKEY CURRENT USER Console 为什么 Registry ConsoleFaceName Key HKEY CURRENT U
  • 从字符串向量中提取第 n 个字符[重复]

    这个问题在这里已经有答案了 我有一个行向量 如下所示 1 118 o m n a jpg 2 122 m f h a jpg 3 152 y f n a jpg 4 160 y m h a jpg 5 083 o m a a jpg 例如
  • Asp.Net SQL刷新页面重复插入?

    我有一个 aspx 页面 其中包含一个文本框和一个按钮 当用户在文本框中输入信息并单击 发布 时 它会将数据插入到我的 sql 数据库中 问题是 如果用户点击刷新 它将继续将相同的数据插入数据库 我很确定调用了整个 单击 方法 而不仅仅是插
  • 将多个字符串传递给 SharedPreferences

    我想存储三个字符串作为我的应用程序的用户首选项 我已经设置了一个很好的布局 只需将字符串保存到 SharedPreferences 即可 我还想知道如何在下一个活动中检索这些字符串 下面是我当前的代码 如果有人可以向我展示如何将此功能添加到
  • Java Web Start应用程序可以从本地系统读取文件,但不能写入[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 请询问您是否需要更多信息 我有安全和所有权限标签 在我的 jnlp 中 当我离线运行我的 java 应用程序时 它可以正常工作 F
  • AWS API Gateway 和 Lambda 的公共 IP 地址(无 VPC)

    我已经配置了一个 AWS API Gateway 并创建了一个 Lambda 函数来连接到外部 REST API API网关和Lambda不在VPC中 因此出口IP地址是随机的 我面临的挑战是外部 REST API 位于防火墙后面 这需要将
  • 如何在 GDScript 中实现结构?

    GDScript 中是否有相当于 C 结构 类的东西 例如 struct Player string Name int Level 戈多3 1 1gdscript不支持structs 但使用可以实现类似的结果classes dict or
  • Windows 7 64 / Visual Studio 2008 / OpenCV2.1错误:“应用程序无法正确启动(0xhex)..”

    我正在 64 位模式下从分支顶部构建 OpenCV2 1 当我将库链接到我的代码 在 XP 上以 32 位模式工作 时 我收到对话框 应用程序无法正确启动 0xc0150002 单击 确定 关闭应用程序 当我启动应用程序时 事件查看器指向
  • 将一个时间范围按其他时间范围分割成多个部分

    我有一项复杂的任务 几天来我一直在用头撞墙 我已经尝试了大约 4 种不同的方法 但是每种方法似乎都停滞不前 并且变得非常令人沮丧 我有一个时间范围 例如 14 30 00 至 18 30 00 考虑某人轮班的时间范围 在此时间范围内 他们表
  • jasmine 与 jscoverage 自动化测试

    一直在看 jsunit 和 jcoverage 演示 单击覆盖率报告链接 在新选项卡中打开此内容 我想知道是否有人对 Jasmine 和 JSCoverage 做过类似的事情 我有点不确定如何继续 编辑 我想知道有什么可以和茉莉花记者一起做
  • fopen b 标志是什么

    在阅读中php fopen 的文档 http php net manual en function fopen php对于 php 我看到以下内容 为了可移植性 强烈建议您在使用以下命令打开文件时始终使用 b 标志fopen http ph
  • 某些 lua/c++ 代码中出现 SIGSEGV 错误

    以下代码以 SIGSEGV 错误结束 extern C include lua lua h include lua lualib h include lua lauxlib h int main int argc char argv lua
  • 创建具有左偏概率分布的随机数

    我想在 1 100 之间随机选择一个数字 这样获得数字 60 100 的概率高于 1 59 我希望数字 1 100 的概率为左偏分布 也就是说 它有一个长尾和一个峰 大致意思是 pers np arange 1 101 1 prob
  • 在 IF ELSE 块中包含 InstallDir

    我尝试使用以下代码 The default installation directory InstallDir PROGRAMFILES PRODUCT NAME to include x64 nsh If RunningX64 The d