问题标签 [installscript]

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 投票
1 回答
1931 浏览

encryption - 如何使用 InstallScript 加密字符串

我正在使用 InstallScript MSI 项目构建安装程序。在安装过程中,我将一些信息保存到本地文件中。该文件是根据用户的偏好创建的,它可能包含敏感信息。

我想加密此信息,但找不到任何 InstallScript 函数来处理此信息。我知道我可以加密功能文件,但此文件是在安装期间创建的,不是特定功能的一部分。

有谁知道使用 InstallScript 加密字符串的方法?

谢谢!

0 投票
2 回答
3688 浏览

windows-installer - Installshield - 根据运行时给出的文件更新注册表

我正在使用 installshield 2010 编写一个基本的 MSI 安装程序。另一家公司将提供一个 .reg 文件,安装程序将在运行时读取该文件并相应地更新注册表。

我不知道如何做到这一点。

我设法使用完成此操作的 Installscript 编写了一个脚本,但是当此脚本以不同的执行方式运行时,我不知道如何进入 setup.exe 所在的源目录(以及 .reg 文件)。

MSIGetproperty 不起作用,我为 SETUPEXEDIR 得到的只是“”。

0 投票
2 回答
3086 浏览

registry - 批处理文件无法立即看到 InstallShield 脚本创建的环境变量

我们使用InstallShield 2008进行产品安装。产品由几个组件组成。安装组件时,会执行一个批处理文件,其中包含特定于该组件的一些安装后例程。

问题:安装后批处理文件使用了一些在产品安装期间通过InstallScript设置的环境变量。但似乎批处理文件无法立即看到注册表(以及新创建的环境变量)的变化。

有没有办法在不重新启动系统的情况下完成安装?

可能有用的信息:目标系统 - Windows XP,当前登录的用户在管理员组中。

0 投票
1 回答
125 浏览

windows-installer - 重新启动后为新用户重新安装程序集,为什么?

我有 Installshield InstallScript MSI 又名“完整”设置和 Installshield Basic MSI 又名“补丁”设置。

完整设置将一些文件复制到 GAC,将一些文件复制到文件夹等。

补丁设置替换了 GAC 中的一些文件和安装文件夹中的一些文件。多么巧妙,不是吗?:)

此外,补丁设置被设计成在安装后它的任何操作都不可见。我正在为此更改序列中的一些属性(该死的,不记得哪些属性,会查找它)。

应用补丁时,应用程序运行良好(管理员用户),但是当重新启动计算机并以不同的用户(只是域,而不是管理员)登录时,应用程序无法运行。

在跟踪中,我发现一条错误行指出其中一个组件(准确地说,将文件放入 GAC 的组件)的安装失败。说没有安装源...

为什么会这样?安装程序设置为每个人都安装,补丁只是替换一些文件,为什么新用户登录时需要“安装”一些东西?

谢谢,马尔科

0 投票
1 回答
1832 浏览

windows-services - 如何通过 InstallShield 升级安装保留服务设置

我在 IS2010 中有一个 InstallScript 项目。它有一些已安装的服务。有些是 C++ exe 并使用“InstallShield Object for NT Services”。其他是通过 LaunchAppAndWait 命令行调用使用Java Service Wrapper作为服务安装的 Java 应用程序。Tomcat 也通过调用其 service.bat 作为服务安装。

当安装程序以升级模式运行时,将重新安装服务,并将设置(自动与手动启动、失败时重新启动、登录帐户等)恢复为默认值。

我想在文件传输之前保存服务设置,然后再重新填充它们,但我一直无法找到一个好的机制来做到这一点。如何保存和恢复服务设置?

0 投票
1 回答
1534 浏览

merge-module - 升级时出现错误 1706 的 InstallScript 项目

我有一个在 InstallShield 2010 中从头开始编写的 InstallScript 项目。它包含三个本机 InstallShield 对象和四个包装 MSM 文件的 InstallShield Merge Module Holder Objects。

当我最初测试该项目时,它在干净的环境中安装良好,但是当我尝试升级到较新版本时,四个合并模块持有者对象中的每一个都产生了“错误 1706。找不到产品 XXXX 的有效来源”消息.

我在网上做了一些挖掘,发现这是一个 Windows Installer 错误,它的发生是因为即使在原始安装介质消失后,MSI 文件也必须存在于机器上。确保这一点的推荐方法是在 Merge Module Holder Object 属性对话框中勾选“本地缓存 msi 包”复选框。

我为所有四个合并模块勾选了该框并重新测试,但这并没有解决问题。然后我查看了这些合并模块实际放置在硬盘上的位置。属性对话框说<DISK1TARGET>,它在运行时解析为C:\Program Files\InstallShield Installation Information\{Product GUID}。查看测试机器,似乎所有四个合并模块都在写入同一个位置,从而覆盖彼此的 MSI 文件。

为了解决这个问题,我编辑了每个合并模块以将其自身缓存到一个唯一的路径<DISK1TARGET>\{Name}。我再次编译和测试,我可以看到每个合并模块现在确实将自己保存到一个唯一的子文件夹中。但是,当我升级时,所有四个错误 1706 消息仍然出现。

有没有人有任何想法?我确定我遗漏了一些明显的东西,但它似乎没有在任何地方记录。:-)

更新:

根据 InstallShield 论坛上的大量帖子,InstallShield 似乎在每次构建 InstallScript 项目时都会为每个嵌入式 MSI 生成一个全新的产品 G​​UID。在更新过程中,InstallShield 引擎会用较新的版本覆盖缓存在目标计算机上的每个 MSI 文件,但在执行它们时,Windows Installer 会说“嘿,这是一个新产品,旧产品的 MSI 在哪里,所以我可以卸载它吗?”,因此出现错误。

是否可以告诉 InstallShield 在每次构建时不要为每个嵌入式 MSI 重新生成产品 GUID?当然,这种行为是对将合并模块嵌入到 InstallScript 项目中的整个想法的嘲弄?:-(

0 投票
1 回答
656 浏览

windows-vista - 在 vista 和 win7 中卸载我的应用程序时出现问题,但在 XP 中没有

在 vista 和 win7 中卸载我的应用程序时遇到问题,但在 XP 中没有。错误消息是“文件 'C:\Windows\system32\mfc40.dll 发生以下错误”访问被拒绝。(0x5)

如果我在该错误消息中选择按钮忽略,我使用 Installshield 2010 中的 installscript 项目为我的应用程序制作了安装程序,我的应用程序可以卸载完成。我找不到解决该问题的解决方案。所以我尝试找到另一个想法,我可以使用 installshield 中的脚本绕过该错误消息,所以当收到该错误时,系统会自动忽略该消息或该消息不出现?谁能帮我看看剧本?提前致谢。

0 投票
1 回答
880 浏览

installshield - 从功能视图中取消选择项目?

如果您使用过 InstallShield 的 installscript。当您拥有“功能视图”并且默认选择列表中的所有内容时,您也可能会遇到这种情况。我们如何取消选择它们?

谢谢。

0 投票
1 回答
1062 浏览

installation - 如何使用 Installshield 2010 创建仅限 32 位或 64 位的安装程序?

我的意思是在 InstallScript 项目中执行此操作,因此如果安装程序未使用正确的处理器类型运行,安装程序将首先退出。

我发现如果它是 InstallScript MSI 项目会很容易,只需修改“模板摘要”字段,而 InstallScript 项目中没有此选项。

我有一些要求可以通过 InstallScript 项目类型完美满足,所以我不能把它搞定。

提前感谢您的建议。

0 投票
1 回答
8363 浏览

xml - 如何使用 InstallScript 更新 XML 文件中的属性

问题:

我正在努力弄清楚如何使用 InstallScript 更新 XML 文件中的某些属性。我想使用适当的 XML 解析函数,但我找不到任何表明此版本的 InstallScript 能够做到的东西。我怎样才能做到这一点?我是否应该尝试使用 FileInsertLine 和 FileGrep 的组合?有没有我想念的图书馆?

背景:

什么软件版本?
我在 Windows Server 2003 R2 上使用 InstallShield 11。

为什么我不只是使用现有的“XML 文件更改”功能?
因为我正在升级并遇到这个错误。它会影响 XML 文件更改功能,因为它与组件相关联(嗯,这是我的猜测)。我花了太长时间尝试官方的解决方法,但无法哄它工作。我最终发现使用 InstallScript + 单行批处理文件复制文件要容易得多,也更可靠。感觉有点hacky,但它确实有效。

现在,我试图找出最简单和最简单的方法来复制 InstallScript 中“XML 文件更改”功能的效果。

如果您需要更多信息,请告诉我,我很乐意提供。

编辑:

毕竟,我最终还是采用了 InstallScript 的方式来完成它——它往往是这个安装程序项目中其他所有东西的实现方式,而且看起来(并且结果是)很快就可以完成。我从TheTraveler在该线程中显示的代码开始,并对其进行了修改以满足我的需要。

这是代码: