问题标签 [installscript-msi]

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 回答
384 浏览

c# - 如何从控制台应用程序运行 InstallScript 项目

我创建了一个重大升级(Installscript msi),通过单击 exe 文件执行时运行完美。

我还在创建一个控制台应用程序,它运行相同的 exe,但这次安装后,连同新版本一起,以前的版本显示在添加/删除程序列表中。

所有组件都安装正确,但

为什么只有当我从控制台应用程序运行 exe 时才会显示以前的版本?

我观察到的另一件事是,当我从控制台应用程序调用 exe 时,安装程​​序将打开并在接受 EULA 等之后,当实际安装开始时,控制台应用程序将再次被调用。为了阻止这种行为,我在 Main 方法中添加了一个检查,以仅运行一次控制台应用程序。现在,当安装程序再次尝试运行控制台应用程序时,它将检查进程是否已经在运行,如果是,它只是从控制台应用程序返回。

但在这样做之后,添加/删除程序列表也会显示两个条目。我必须做些什么来解决这个问题?我被这个问题困住了。

我正在使用InstallShield 2011 专业版来创建exe。

0 投票
0 回答
479 浏览

windows-installer - MsiDatabaseOpenView 返回 6 (ERROR_INVALID_HANDLE)

我在 InstallShield 2013 中有一个基本 MSI 项目。我正在尝试使用 InstallScript 自定义操作在组合框中动态插入项目。在实际插入物品之前,我目前被卡住了。

当我尝试打开视图时,我得到 ERROR_INVALID_HANDLE。对于我所缺少的东西,我将不胜感激。

当我使用 hDatabase 或 hMSI 作为第一个参数时,MsiDatabaseOpenView 不断返回 6 (ERROR_INVALID_HANDLE)。

0 投票
2 回答
1927 浏览

windows-installer - installshield 2012 支持目录

我有一个必须维护的 Installshield Installscript MSI 安装程序。它在 Support Files/Billboards 中包含大约 10 个文本文件。当安装程序运行时,我使用以下代码在自定义 Installscript 函数中打开文件进行编辑/复制:

打开文件(nvReadFileHandle,SUPPORTDIR,LOGGER_PRM)

这段代码已经完美地运行了大约一千次安装,其中许多都是安装程序的确切版本。然后,昨天,它第一次失败了。

查看 msi 日志后,我看到文件被提取到:

%TEMP%\3\ {GUID1}\ <-- 忽略空格

当上述代码执行时,SUPPORTDIR 的值为:

%TEMP%\ {GUID2}\ <-- 忽略空格

这以前从未失败过。那么为什么现在会发生呢?我能做些什么来修复它?当我用谷歌搜索问题时,我看到了相互矛盾的信息。考虑到具体情况,我宁愿不要反复试验 50 次以获得解决方案。

编辑:这里有更多信息。我刚刚发现我们正在安装的服务器是虚拟机的克隆。我怀疑使用的环境变量不正确。如果我们键入“cd %temp%”,它将转到上面的第一个目录。但是,如果我查看名为 TEMP 的环境变量,它们都指的是上面的第二个目录。

0 投票
1 回答
605 浏览

installshield - InstallShield won't over-write a file during an upgrade

In my OnFirstUIAfter function, I rename a file that was just installed, using:

In my OnMaintUIAfter function, I install FileName1 again, but it needs to over-write FileName2, just as it did in the initial install. If I simply use:

Nothing happens. I still have both files in the INSTALLDIR, and FileName2 is out of date.

Believing that there's a problem with the installer script not being able to rename an existing file, I have since determined to delete the file prior to the rename.

And still nothing happens. Both files are still in the INSTALLDIR.

Keep in mind that FileName2 is not a file being installed by any previous install. All the installs install FileName1 and then rename it to FileName2.

Any words of wisdom? I'm completely out of ideas.

SH

0 投票
2 回答
2090 浏览

installshield - InstallShield 响应文件缺少响应

我正在尝试自动安装一些安装文件 (.exe)。我设法让一个工作没有任何问题,但第二个遇到困难。

我在命令提示符下使用以下命令创建了响应文件:

正如我所期望的那样,这在 C:\Windows 中生成了一个“setup.exe”文件。以下是该文件在记事本中的外观示例:

我使用以下命令使用 setup.iss(响应文件)运行安装:

除了一个之外,所有响应文件似乎都可以工作。该程序会打开一个对话框,要求我从一对单选按钮中进行选择,以选择我希望它安装的语言手册。我希望它默认点击“下一步”按钮,但 .iss 文件中显然没有任何记录可以这样做。

为了完成这个提示,我必须手动添加什么到 .iss 文件?为什么我的录音没有放这个?

附加信息:

  • 如果我在这一步手动点击“下一步”,程序将按预期完成安装。

  • 当我手动安装所有内容时,程序成功安装。

0 投票
2 回答
8649 浏览

batch-file - 我可以从 Windows 批处理文件运行 Windows Installer (msiexec) 吗?

好的,我不在我的元素,但无论如何都可以。

我需要静默安装供应商提供的 Windows 程序。供应商提供了一个用于安装的 MSI 文件。我创建了一个 bat 文件来运行 msiexec,其中包含以下行:

当我执行 bat 文件时,会弹出一个错误对话框,上面写着:

“此安装无法通过直接启动 MSI 包来运行。您必须运行 setup.exe”

msiexe 错误日志说:

错误 # 是 1603,这意味着权限问题,但我检查了访问权限并没有发现任何问题。

不运行 Setup.exe 就无法运行 msiexe 是真的吗?

任何帮助表示赞赏 - 谢谢。

0 投票
0 回答
176 浏览

installation - 安装脚本 MSI:以管理员身份运行 exe 时,如何在当前用户主目录中安装产品?

我有一个从 IS Installscript msi 项目创建的 msi,因为该产品需要提升的权限,它应该以管理员身份运行。一切都很好,但现在产品安装在管理员主目录而不是用户主目录中。

当我使用 GetEnvVar(USERPROFILE,svUserProfile) 时,我得到的是管理员主目录,而不是当前登录的用户目录。

任何帮助都可以解决这个问题。

0 投票
1 回答
81 浏览

windows-installer - 如何使用命令行将新的自动升级项目添加到 installscript MSI 项目

我正在使用 InstallShield 2012 创建 installscript MSI 项目来为我的产品创建补丁安装程序。我计划自动化我的产品构建过程以使用 ISCMBuild.exe 创建补丁。

在创建新补丁时,我想在升级视图下添加所有先前设置的列表,以支持先前补丁级别的升级方案。

每次创建新补丁时,我都必须在升级部分添加以前的补丁设置文件详细信息。现在,我想知道是否可以从命令行在升级视图中添加此条目。

0 投票
2 回答
166 浏览

c# - 如何将此 InstallScipt 代码转换为 C#?

我正在使用 DTF(Microsoft 部署基础)命名空间将我的 InstallScript 自定义操作转换为托管自定义操作。有一段 InstallScript 代码在转换为 C# 时遇到了麻烦,我需要在其中进行一些 XML 文件操作。原始的 InstallScript 代码如下。我下面的代码是到目前为止我如何转换它。有没有更好的转换方法,以便我可以利用点表示法 (Intellisense) 而不是后期绑定 XML 文档对象。

我的转换

0 投票
2 回答
159 浏览

windows-installer - 强制 .msi 跳过删除某些文件

我想让 .msi 在升级时不删除某些文件。我看到我可以添加要删除的文件,但我没有找到任何关于如何对 .msi 说“不要删除它(升级时)”的信息。

有人可以帮我吗?