获取安装目录安装盾

2024-03-31

我想通过安装盾来创建我的设置。 我使用命令参数Setup.exe /path=[SETUPEXEDIR]\log.txt我的设置位置是Desktop\myapp\Setup.exe使用[SETUPEXEDIR]时返回临时文件夹 我希望在使用 [SETUPEXEDIR] 时返回我的 Setup.exe 位置。

我使用 installshield 2016 版本 23 SP 2。 我使用 MSI 脚本。

我想要获取位置并在命令参数先决条件中使用。


有点难以理解你到底在问什么,但是据我了解,您想知道 setup.exe 运行的位置?

变量

  • The 第一个问题是什么安装盾版本你正在用吗?

  • The 第二个问题是:你在使用吗基本MSI or 安装脚本 MSI?

  • The 第三个问题是:什么类型的发布媒体你正在用吗?

  • 可能还有更多相关问题...

给智者的一句话:如果您确实在使用 Installscript MSI,您应该知道这是一个非常有缺陷的项目类型,您应该认真考虑切换到 Basic MSI,以免自己陷入困境。如果您愿意,我可以提供更多相关信息。我不得不完全放弃 Installscript MSI 才能解决我的部署问题。

安装屏蔽属性

不同版本的 Installshield 似乎可能表现不同,并且对这些文件夹属性/变量的支持也不同。这些属性似乎也不适用于所有类型的发布介质。最后,它们可能只能分别在 Basic MSI 或 Installscript MSI 中工作。我发现的属性是:包裹_位置 http://helpnet.installshield.com/installshield21helplib/Subsystems/installshield21langref/helplibrary/PACKAGE_LOCATION.htm#langref_variabledata_2139200659_1022943, 设置执行目录 http://helpnet.installshield.com/installshield21helplib/helplibrary/SETUPEXEDIR.htm and SRCDIR http://helpnet.installshield.com/installshield21helplib/Subsystems/installshield21langref/helplibrary/LangrefSRCDIR.htm#langref_variabledata_2139200659_1023134。似乎还有一个名为的 Installscript 方法获取当前目录() http://helpnet.installshield.com/installshield22helplib/Subsystems/installshield22langref/helplibrary/LangrefGetCurrentDir.htm在最新版本的 Installshield 中可用,但文档警告有关使用它的信息(请参阅链接)。

请按顺序访问上面的链接并详细阅读每个属性(或方法)的限制。使用符合您的要求和场景的选项(如果有)非常重要。例如,PACKAGE_LOCATION 仅适用于Installscript MSI,SETUPEXEDIR 由Setup.exe 设置。如果最终用户直接运行 .msi 包,则不会设置 SETUPEXEDIR。

MSI 内置属性

在我看来,获取内置 MSI 属性源目录 https://msdn.microsoft.com/en-us/library/windows/desktop/aa371857%28v=vs.85%29.aspx可能是一个可以尝试的选择。我的快速测试表明它适用于 InstallScript 和 Basic MSI。但是,我不知道这是否适用于所有版本的 Windows Installer。请在各种 Windows 版本上进行测试以确定。

您还应该意识到使用 SourceDir 的潜在问题,该问题在SETUPEXEDIR 的文档 http://helpnet.installshield.com/installshield21helplib/helplibrary/SETUPEXEDIR.htm。这适用于编译为包含所有文件的单个压缩 setup.exe 的安装程序 - 此启动器会将 MSI 文件提取到临时位置并从那里运行。当我尝试使用未压缩的网络图像时,使用 SourceDir 效果很好。

最后,如果您使用 setup.exe 压缩所有文件并启用系统上 MSI 的缓存,那么您将从内部某处运行:C:\WINDOWS\Downloaded Installations\{GUID}\.

所有这些在较新版本的 Installshield 上都可能有所不同。我正在使用现有的旧版本进行测试。请对您的版本进行彻底测试。

我还应该提到原始数据库 https://msdn.microsoft.com/en-us/library/aa370562%28VS.85%29.aspx内置 MSI 属性。检查链接以获取有关如何设置的文档。

一些链接:

  • Installscript 项目 - 获取 Setup.exe 位置 https://community.flexerasoftware.com/archive/index.php?t-149584.html.
  • 如何找到setup.exe目录? http://forum.installsite.net/index.php?showtopic=14025

用于测试的 Installscript 函数

仅供参考,这里有一个快速但肮脏的函数,用于通过 Installshield 自定义操作测试这些属性(这适用​​于其他可能在没有像您一样进行测试的情况下发现此问题的人):

function TestFolderProperties(hMSI)   
     STRING svName;
     NUMBER nvSize;
begin             

    // MSI properties
    nvSize = 256;
    MsiGetProperty (hMSI, "SETUPEXEDIR", svName, nvSize);
    MessageBox ("SETUPEXEDIR: " + svName, INFORMATION);
    MsiGetProperty (hMSI, "SourceDir", svName, nvSize);
    MessageBox ("SourceDir: " + svName, INFORMATION);
    MsiGetProperty (hMSI, "OriginalDatabase", svName, nvSize);
    MessageBox ("OriginalDatabase: " + svName, INFORMATION);

    // System Variables
    MessageBox ("SRCDIR: " + SRCDIR, INFORMATION);
    // PACKAGE_LOCATION is not available in my version of Installshield, enable and test 
    //MessageBox ("PACKAGE_LOCATION: " + PACKAGE_LOCATION, INFORMATION);
end;

请记住将导出添加到 setup.rul 文件的顶部:

export prototype TestFolderProperties(HWND);  

测试编译以验证,然后创建 Installscript 自定义操作并将其放入序列中。使自定义操作的“返回处理”同步(忽略退出代码)。我将其放在序列中的 InstallFinalize 之前,使用立即模式执行。重建您的版本并运行它。尝试不同的版本构建配置(带有外部源文件的 MSI、仅带有内部压缩文件的 MSI、带有外部文件的 setup.exe 启动器、带有压缩内部所有文件的 setup.exe、带有缓存的 setup.exe、不带缓存的 setup.exe 等。 ..行为可能会有所不同)。

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

获取安装目录安装盾 的相关文章

  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 带有 Maven Wrapper 的 Java 17 导致无法识别的 VM 选项“MaxPermSize=512m”

    I use OpenJDK 17 https jdk java net 17 使用 Maven Wrapper 3 8 2 从春季初始化 https start spring io Maven项目 JAR打包 Java 17 Spring
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何在 OSX 上安装 LaTeX .sty 文件?

    我设置了一个 LaTeX 项目 tex documents some file tex support todonotes sty where some file tex uses todonotes usepackage colorinl
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • 禁用允许文本选择的

    残疾人可以吗
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • Prometheus Java 摘要指标是线程安全的吗?

    普罗米修斯是Java吗Summary对象线程安全 如果我在类中将其声明为静态 则该类的所有实例都将使用它 Prometheus 是否为该度量对象实现了线程安全 Prometheus 客户端库负责处理方向检测的线程安全等细节 例如Summar
  • is_numeric() 与 is_float() 与 is_int()

    我的理解是 if is numeric input true 那么要么 is float input true OR is int input true OR input 0 OR input是一个数字字符串 意味着如果没有用引号括起来 它
  • FFMPEG 在视频末尾添加图像

    我需要使用 FFMPEG 在 mp4 视频文件末尾添加一秒钟的图像 我的视频尺寸是 WxH 图像尺寸是 MxM 因此视频和图像尺寸不同 我尝试了不同的选项 以便在视频末尾添加图像 ffmpeg i concat videoIn mp4 im
  • iOS 将照片保存在应用程序特定的相册中

    我正在创建一个 iOS 5 应用程序 我想将照片保存到设备中 我想将照片保存到我的应用程序特定的相册中 因此我需要创建相册 然后将照片保存到相册中 我知道如何创建相册 ALAssetsLibrary library ALAssetsLibr
  • R:加速“group by”操作

    我有一个模拟 中间有一个巨大的聚合和组合步骤 我使用 plyr 的 ddply 函数对这个过程进行了原型设计 它可以很好地满足我的大部分需求 但我需要更快的聚合步骤 因为我必须运行 10K 次模拟 我已经在并行扩展模拟 但如果这一步骤更快
  • 设计:新错误(可加密)

    我已经一周没有碰过我的代码了 但是当我捆绑并尝试运行我的网络服务器时 我现在收到以下错误 这让我死在了水里 按照错误输出中的建议包含可设计加密的 gem 并不能解决问题 并且仍然会导致相同的错误 任何帮助是极大的赞赏 DEVISE Devi
  • Reactjs:使用 shouldComponentUpdate() 停止在特定状态更改时重新渲染

    我的组件 onload 中有多个 setState 我的页面在单击下拉值时重新呈现 因为单击时我通过以下方式存储这些值setState 为了停止点击时重新渲染 我使用下面的代码 shouldComponentUpdate return fa
  • Nginx 反向代理配置

    我在使用 nginx 进行简单配置时遇到问题 我有一台托管 docker 容器的服务器 因此 nginx 位于容器中 所以我们调用 urlfoo com 我想要网址foo com service1实际上只是去另一个端口上的 foo com
  • CSS 中如何使用“大于”或“>”字符?

    我在 CSS 文件中多次看到这个字符 但我不知道它是如何使用的 谁能向我解释一下并展示它们如何使页面样式变得更容易 这是一个 CSS 子选择器 P gt SPAN表示将以下样式应用于作为子级的所有 SPAN 标记P tag 请注意 孩子 的
  • Visual Studio Code 中是否有像 DocBlockr 这样的代码注释功能?

    我使用 Sublime Text 3 Atom io 和 Bracket io 作为以前的编辑器 我也非常喜欢新的 Mac 版 Visual Studio 代码编辑器 Sublime 有类似 DocBlockr 的代码注释功能吗 这对我来说
  • Android Studio 0.5.9错误代码42

    每次我尝试从 eclipse 导入项目时 我都会收到这样的错误 Error Execution failed for task app mergeDebugResources 错误 无法运行命令 D Android sdk build to
  • 如何优化间接基数排序? (又名如何优化不可预测的内存访问模式)

    我用 C 编写了一个间接基数排序算法 间接 我的意思是它返回项目的索引 include
  • Kubernetes TLS 秘密证书过期

    我使用 openssl 创建通配符自签名证书 我将证书有效期设置为 到十年 我通过使用 openssl 检查证书来仔细检查有效期 我使用步骤 1 中准备的私钥和证书创建一个 Kubernetes 密钥 如下所示kubectl命令 kubec
  • 如何从ocaml列表中获取子列表

    我正在查看列表文档 图书馆好像没有提供sublist功能 我正在尝试从中获取元素列表i to j 现在我必须把它写成 let rec sublist list i j if i gt j then else List nth list i
  • 如何解析会导致非法 C# 标识符的 JSON 字符串?

    我一直在使用NewtonSoft JSON 转换 http james newtonking com json用于解析 JSON 字符串并将其转换为 C 对象的库 但现在我遇到了一个非常尴尬的 JSON 字符串 我无法将其转换为 C 对象
  • JavaMail 与 Oauth 和 Office365

    我正在用 Java 构建一个简单的命令行应用程序 它可以登录我的电子邮件箱 IMAP 并下载所有附件 我使用了基本身份验证 但 Microsoft 正在禁用它 因此我尝试将我的应用程序转换为使用 OAuth 在阅读了不同的 OAuth 流程
  • 部署时出现 aws beanstalk 403 错误

    您好 我正在使用亚马逊网络服务弹性豆茎 每次我使用 git aws push 时 我的 php 应用程序都会成功上传但是 当我单击 url 时 它会显示 Forbidden You don t have permission to acce
  • 自旋锁与忙等待[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 请解释原因忙碌等待通常不受欢迎 而Spinning通常被认为还可以 据我所知 它们都会无限循环 直到满足某些条件 A 自旋锁通常在资源争用较少时
  • 使用Mysql lower_case_table_names为1

    我已经使用 yum 在 linux 中安装了 mysql v5 5 17 现在我想要默认的小写表名 所以我添加了 set variable lower case table names 1 in etc my cnf 但如果我这样做 我就无
  • 获取安装目录安装盾

    我想通过安装盾来创建我的设置 我使用命令参数Setup exe path SETUPEXEDIR log txt我的设置位置是Desktop myapp Setup exe使用 SETUPEXEDIR 时返回临时文件夹 我希望在使用 SET