- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从 InstallScript 中的 .NET DLL 调用函数。我该怎么做?
让我们从简单的 Hello World 开始。假设我创建了简单的类库 TestLibrary.dll
using System;
using System.Windows.Forms;
namespace TestLibrary
{
public static class TestClass
{
public static void TestFunction()
{
MessageBox.Show("Hello!");
}
}
}
我不想在目标机器上安装这个DLL,我只想在安装过程中运行TestFunction()
,所以我只添加了TestLibrary.dll
在 SupportFiles View 中(我使用 InstallShield 2013 Professional,基本 MSI 项目类型)。然后在 InstallScript 中,我为其编写原型(prototype),加载 TestLibrary.dll 并尝试从中调用 TestFunction。像这样的事情:
export prototype TestDllFunction(HWND); //call in Custom Action
prototype TestLibrary.TestFunction();
.......
function TestDllFunction(hMSI)
NUMBER Result;
begin
Result = UseDLL(SUPPORTDIR ^ "TestLibrary.dll");
TestLibrary.TestFunction();
Result = UnUseDLL("TestLibrary.dll");
end;
这里有两个问题:仅当我使用 TestLibrary 的硬编码绝对路径调用
。第二个问题-假设我成功加载了DLL。如何调用我的 UseDLL
时,UseDLL
返回 0(0 表示 DLL 已成功加载) .dllTestFunction
并看到“Hello”消息框?
最佳答案
UseDLL 仅适用于非托管代码。对于 .NET 使用 DotNetCoCreateObject 。但说实话,对于 MSI 项目,我会完全跳过 InstallScript 并直接使用 C#。 Windows Installer XML (WiX) 具有称为部署工具基础 (DTF) 的功能,该功能使构建与 Windows Installer 兼容的托管自定义操作成为可能。对于 Windows Installer 来说,输出 DLL 看起来像传统的 Win32 DLL,并且与 InstallShield 兼容。
关于.net - 如何在 InstallScript 中从 .NET DLL 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21477323/
我正在查看一些 InstallScript 代码。 对于整数,我习惯于将 % 运算符取模。我对字符串不熟悉。 if (szSomeString % szSomeOtherString) then
看起来有一个内置函数,VerCompare,但它需要包含所有四个组件的字符串,例如1.2.3.4。我没有尝试在 InstallScript 中进行字符串操作,希望有人已经有了代码来获取版本字符串并根据
如何在安装过程中在 installscript 中执行以下命令? netsh.exe advfirewall firewall show rule name="PowerSI (Release ASI
我正在更新用 InstallShield 编写的安装程序,以执行应用程序的主要升级,并通过自定义操作调用 InstallScript 函数来备份和恢复应用程序目录中的某些文件。我有使用硬编码的先前安装
我有一个 InstallShield 2009 'InstallScript MSI' 项目,它显示了 2 个对话框,这些对话框在我的安装中是不需要的: Customer Information
你好 Stackoverflow 社区, 我在安装脚本自定义操作中调用 C++ DLL 时遇到问题。当我尝试使用参数调用我的 DLL 时出现问题。错误图像如下所示: 带参数调用DLL 值,参数,在DL
我需要从 InstallScript 中的 .NET DLL 调用函数。我该怎么做? 让我们从简单的 Hello World 开始。假设我创建了简单的类库 TestLibrary.dll using
我有一个 Installscript MSI 项目,我想在 Install Shield 中禁用全局字体注册。我该如何做到这一点? 我只有一些字体文件,我将它们复制到安装应用程序的硬盘上,但它在 HK
我有一个纯InstallScript项目,由于this issue而导致出现问题。 。通过添加一些在安装新文件之前删除特定目录的 InstallScript 暂时解决了这个问题,但这并不理想。然而,t
我可以在 InstallShield 2009 中使用 InstallScript 项目创建 64 位 setup.exe 文件吗?文档仅与 msi 项目有关。或者请告诉我使用 64 位注册表项的替代
我对 InstallShield 很陌生,并且继承了一个 InstallScript 项目。我基本上已经找到了解决方法并解决了大部分问题。但是,我希望在每次构建产品时在我们的构建服务器上自动构建这个项
我已经创建了一个要在 Installscript 中使用的 .NET dll。它主要安装证书、删除证书并检查证书是否已存在。这是我的 Exists 方法: [ComVisible(true)] pub
我正在使用 InstallShield 2013 Premium。我在 Visual Studio 2010 中创建了一个 C++ dll,以提供一些我无法单独使用 InstallScript 实现的
我是一名优秀的程序员,十分优秀!