问题标签 [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 回答
384 浏览

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

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

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

所有组件都安装正确,但

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

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

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

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

0 投票
1 回答
3872 浏览

installshield - InstallShield:使用具有相对路径的 LaunchAppAndWait()

假设,我有以下文件夹结构:

c:\Test\setup.exe(这是主要的安装启动器)

c:\Test\Feature1\setup.exe(安装feature1)

c:\Test\Feature2\setup.exe(安装feature2)

我在主安装启动器中创建了自定义的 InstallShield 对话框,用户可以在其中单击相应的按钮并运行 Feature1 或 Feature2 的安装。我使用 InstallScriptLaunchAppAndWait()函数来做到这一点。所以,我的问题是 - 我如何使用相对路径来做到这一点?

例如:

0 投票
1 回答
763 浏览

c# - 在 Installscript 中使用的 .NET dll 中使用布尔返回值

我创建了一个 .NET dll 以在 Installscript 中使用。它基本上安装证书,删除证书并检查证书是否已经存在。这是我的 Exists 方法:

这是安装脚本代码

在这个例子nReturn中,总是-1当我在 Installscript 中调试它时,证书是否存在。(当然,从 .NET 程序中它可以正常工作)然后我尝试使用 aint作为返回值,这很有效。所以有一个解决方法。

但我想知道是否有人知道为什么我不能将bool其用作 Installscript 中使用的 .NET dll 的返回值。

0 投票
1 回答
5306 浏览

windows-installer - 如何使用安装屏蔽应用程序将合并模块 (.msm) 添加到安装脚本?

我正在使用 Install Shield,我知道我们可以使用Redistributables菜单项添加合并模块,如果它是Basic MSI Project.

但如果是,我看不到Redistributables菜单项InstallScript Project

有人可以帮我弄清楚如何使用 Install Shield 将合并模块添加到 InstallScript 项目中吗?

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

windows-installer - 如何从属性中删除字母?

我正在创建一个基本 MSI,并且我正在使用系统搜索从注册表中读取一个值,并将其存储在一个属性中。我想在 cfile 路径中使用此属性,但不幸的是,我从注册表中读取的值如下所示:\\MyServer.MyDomain.com. 有谁知道我可以删除两个“\”吗?

提前致谢!

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

installshield - InstallScript 检查安装路径是否为根驱动器

如何检查用户是否选择了根驱动器进行安装。如果用户选择根驱动器并提示用户选择另一个路径,则安装不应继续。

现在我正在使用以下代码,是否有更好的选择来做同样的事情 -

0 投票
2 回答
8130 浏览

installshield - 如何创建自定义 installshield 对话框皮肤?

我正在尝试使用 InstallShield 2013 Authoring Tool 创建一个 InstallScript 项目。到目前为止,我一直在使用默认的对话框和皮肤。现在我需要自定义它们以满足我的需求,但我发现帮助文档中的链接缺失或损坏。我想知道是否有人知道如何创建自定义对话框皮肤或者可以指出我正确的方向。

0 投票
2 回答
2316 浏览

.net - 如何在 InstallScript 中从 .NET DLL 调用方法

我需要从 InstallScript 中的 .NET DLL 调用函数。我该怎么做?

让我们从简单的 Hello World 开始。假设,我创建了简单的类库TestLibrary.dll

我不想在目标机器上安装这个 DLL,我只想TestFunction()在安装过程中运行,所以我只是TestLibrary.dll在 SupportFiles 视图中添加了(我使用 InstallShield 2013 Professional,Basic MSI Project Type)。然后在 InstallScript 中,我正在为它编写原型,加载TestLibrary.dll并尝试从中调用TestFunction。像这样的东西:

我这里有 2 个问题:UseDLL仅当我UseDLL使用硬编码的绝对路径调用TestLibrary.dll. 第二个问题 - 假设我成功加载了 DLL。那么我怎样才能调用我的TestFunction并看到一个“Hello”消息框呢?