问题标签 [installshield-2016]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
748 浏览

installation - RegAsm.exe 无法通过 installshield 2016 注册 Dll

我们有 installshield 2016,在其中我们正在运行安装程序脚本。该脚本是通过自定义操作调用的。

所以我们写了下面的命令来注册“mydll.dll”,如下所述的命令,C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /codebase mydll.dll 上面的命令在手动运行时工作得很好通过具有管理访问权限的命令提示符。但是通过使用 installshield 脚本自定义操作创建的安装程序失败。

要运行命令,我们使用 LaunchApplicationAndWait() 和 LaunchApplication() 函数作为 strcmd = "path to cmd.exe" + "cmd.exe" strcmdopt = "path to regasm.exe" + "regasm.exe " + /codebase + path 和dll的名称

ret = LaunchApplication(strcmd,strcmdopt,windir,sw_normal,无限,LAAW_OPTION_WAIT | LAAW_OPTION_SHELLEXECUTE)

同样 ret = LaunchApplicationAndWait(strcmd ,strcmdopt,LAAW_OPTION_WAIT | LAAW_OPTION_HIDDEN)

我的问题是为什么两个命令在通过 installshield 自定义操作脚本运行时都不起作用

0 投票
2 回答
1636 浏览

installshield-2016 - ISDEV:致命错误 -1027:签名 .dll 失败

我知道这个问题的答案(我将在问题下方发布)。当我用谷歌搜索此错误消息时,什么也没出现,所以我认为这可能会在将来对其他人有所帮助。这是原来的问题:

我刚刚切换了构建平台(从 TFS 2013 到 TFS 2017),现在我无法构建 - 我收到上面的错误。我开始为不同的 .dll 获取它,所以我删除了那个 .dll,现在我为这个获取它。似乎无论遇到哪个 .dll 都会出现此错误。

因此,我们使用 TFS 进行构建,但即使我只是使用相同的源进入命令行并运行 iscmdbld,我也会得到相同的错误。奇怪的是,如果我对从 TFS2013 构建中提取的代码执行相同的操作,它工作正常。运行 signtool.exe 也在该文件夹中工作。

这可能是什么原因造成的?

0 投票
2 回答
1880 浏览

installshield - 通过 setup.exe 创建日志的 msiexec 参数不起作用

我正在尝试从我的安装中获取使用setup.exe. 我可以使用 just 获取日志setup.exe /V"/l\*v c:\temp\installlog.txt",但我也想传递x参数以获取“额外的调试信息”,当我尝试时,setup.exe /V"/l*vx c:\temp\installlog.txt"我得到:

1629: 无效的命令行。

知道我做错了什么吗?我安装了 msiexec 版本 5。

0 投票
0 回答
201 浏览

c# - 从 InstallShield 调用 C# 自定义操作得到错误找不到 InstallShield.Interop.Msi

我有一个非常简单的安装程序设置,它试图调用自定义操作(调用托管程序集中的公共方法),但是当我调用它时,我得到了错误:

调用的目标已引发异常。---> System.IO.FileNotFoundException:无法加载文件或程序集“InstallShield.Interop.Msi。

该文件与 .dll 位于同一文件夹中,因此如何将其包含在我的项目中,以便它可以在执行期间解析。我以前用这种方式调用过方法,从来没有得到这个错误,所以我真的不明白为什么我现在得到它。

0 投票
1 回答
29 浏览

installshield - InstallShield 2016 Pro,服务不会安装多个功能

我创建了一个安装程序来发布 Web 应用程序。这没有任何问题。我创建了一个单独的安装程序来安装 Windows 服务。这也没有任何问题。

由于从业务角度来看它们紧密相关,因此我将这两个安装项目合并为一个具有两个功能的项目。服务功能是可选的。所有文件都被移动到适当的目录,即 Web 应用程序文件将转到 wwwroot,服务应用程序文件将转到程序文件 (86)\blah,但服务本身并未创建。即使我已经将它完全复制为另一个项目并将其绑定到正确的组件。

我绞尽脑汁,经历了无数次,但我找不到原始服务安装项目和组合项目之间的任何差异。

我错过了什么?

这是一个屏幕截图,显示该服务确实已设置

在此处输入图像描述

0 投票
1 回答
82 浏览

c# - 使用 Installshield 降级时隐藏弹出消息

我在 3.2.0.3(最新)上安装 3.2.0.2 版本(旧)以验证降级。但是,我收到一条弹出消息The setup will perform an upgrade....,然后是另一个弹出消息A later version of ...

在第二个弹出窗口之后,安装操作刚刚终止(这是预期的行为)。但是,问题在于降级时不应显示的第一个弹出窗口。

我怎样才能摆脱这个第一个弹出窗口?

我尝试禁用提示,don't prompt选项,但没有运气。

我也搜索了 property manager直通字符串编辑器,但无法找到该消息的来源。

谁能帮我摆脱这个?

提前致谢

0 投票
1 回答
298 浏览

windows - 来自 InstallShield Suite 安装程序的安装进度状态消息

我有自己的 Updater.exe,它启动 InstallShield Suite 安装程序(嵌入了另外两个 InstallShield MSI)。我想从 Suite Installer 获取安装进度状态消息并显示在我的 Updater.exe UI 中。

是否可以轮询/ping 安装程序以获取安装状态消息?(如登台、安装 msi1、安装 msi2、配置、安装完成)。

我在我的安装程序中使用 .NET Framework 4.5+ 作为先决条件,Installshield 版本 2016,用于自定义操作的 wiX 工具集。

0 投票
0 回答
290 浏览

windows-installer - 使用 InstallShield,我如何“强制”特定的动态链接文件覆盖更高版本的文件?

我有一个用于安装应用程序的基本 MSI 项目。由于各种原因,此软件包包含一个 JRE。在 InstallShield2016 项目中,打包的 JRE 由一个组件表示。构成 JRE 组件的文件是动态链接的。

最近,我从 Oracle Java 8 迁移到 OpenJDK 8。对于这次迁移,我进行了必要的更改,以便在从旧包升级到新包时执行重大升级。这会导致 InstallShield 先卸载以前的软件包,然后再安装新软件包。

这是我遇到问题的地方。在移除旧版本和安装新版本的过程中,MSI 从 Oracle Java 8 JRE 中查看“jvm.dll”,然后在 OpenJDK 8 JRE 中查看同一文件,发现新文件的文件版本为低于旧文件。

Oracle Java 8 'jvm.dll' 文件版本:25.45.0.2

OpenJDK 8 'jvm.dll' 文件版本:8.0.2220.10

没有手动更改文件版本,我不确定如何强制将新文件安装在前一个文件之上。有没有其他选择?

0 投票
0 回答
55 浏览

windows-installer - InstallScript MSI 项目 - 次要升级不更新文件

软件:InstallShield 2016 专业版

项目类型:InstallScript MSI 项目

案例场景

要修复应用程序的小错误,我需要更新“应用程序数据\文件和文件夹”部分下的 DLL 文件,其中这些 DLL 文件是从 C# 解决方案的构建中生成的。为了交付较新的构建版本 DLL 文件,我决定使用小升级,我需要更新产品版本值(1.2.4 -> 1.2.5)和包代码(每次我都会自动更新包代码)构建可执行安装程序)。

问题

  1. 机器安装了较早版本的应用程序,执行新的安装程序以触发次要升级。但是,升级过程完成后文件不会更新(例如,DLL 文件的日期修改不会更新)。
  2. 升级后(例如 1.2.5 -> 1.2.6),卸载时不会删除“应用程序数据\文件和文件夹”下的文件。如果不执行升级,文件将被正确删除。
  3. 最后一个问题是原来的 NLog.dll 版本是 3.5,然后我在项目中添加了另一个版本为 4.7 的 NLog.dll。我意识到新添加的 NLog.dll 在“Application Data\Files and Folders”和“Organization\Components”部分下都变成了“NLog1.dll”,然后我删除了版本为 3.5 的版本,并从 NLog1 重命名了新版本。 dll 到 NLog.dll。通过这些操作,即使我没有执行小升级,卸载时也不会删除 NLog.dll 和 NewtonSoftJson.dll。

我已经尝试过,但没有解决问题:

  1. 更新“应用程序数据\文件和文件夹”部分中文件的属性,为所有 DLL 文件启用“始终覆盖”。
  2. 在 OnMaintUIBefore() 中调用 FeatureReinstall() 或 ComponentReinstall()。此外,我创建了一个新的 InstallScript MSI 项目,它克隆了现有项目的大部分内容。新项目的安装程序没有文件升级/删除问题,也没有实现 InstallScript 逻辑。因此,我认为该问题不是由现有项目中的 InstallScript 引起的。
  3. 删除 Application Data\Files and Folders (NLog.dll) 下的文件,然后将其添加回来。这种方法会产生一个新问题,即使我没有使用新的安装程序升级,也不会删除 NLog.dll。

项目信息:

该项目在媒体下只有一个发布设置,没有设置升级或补丁设计。结果,构建只生成installer.exe,而不是创建installer.msi。我提到这个的原因是因为我查找创建一个小升级,但一个小升级需要installer.msi。虽然没有创建小升级或补丁,但更改产品版本仍然会触发小升级!

供参考:

根据我所做的研究,“应用程序数据\文件和文件夹”和“组织\组件”下的文件似乎在主键、注册表或命名方面搞砸了?但是,我对 InstallShield 还很陌生,我不敢对项目进行大的改动。专家的任何帮助和建议将不胜感激!