首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取c++ dll SetMsiProperty接口设置的installshield 2019中的属性值?

在InstallShield 2019中,要获取C++ DLL SetMsiProperty接口设置的属性值,可以通过以下步骤实现:

  1. 在C++ DLL中使用SetMsiProperty接口设置属性值。SetMsiProperty函数是Windows Installer API的一部分,用于设置Windows Installer安装程序的属性值。具体的代码示例如下:
代码语言:txt
复制
#include <windows.h>
#include <msi.h>

extern "C" __declspec(dllexport) UINT __stdcall SetMsiProperty(MSIHANDLE hInstall)
{
    // 获取安装程序句柄
    MSIHANDLE hMsi = MsiGetActiveDatabase(hInstall);

    // 设置属性值
    MsiSetProperty(hMsi, TEXT("PROPERTY_NAME"), TEXT("PROPERTY_VALUE"));

    return ERROR_SUCCESS;
}

在上述代码中,PROPERTY_NAME是要设置的属性名称,PROPERTY_VALUE是要设置的属性值。

  1. 在InstallShield 2019项目中调用C++ DLL。在InstallShield项目中,可以使用Custom Action来调用C++ DLL。具体的步骤如下:
  2. a. 打开InstallShield项目,进入“Custom Actions and Sequences”视图。 b. 在“Custom Actions”下选择“Install”节点,右键点击选择“New Custom Action”。 c. 在弹出的对话框中,选择“Call a DLL from InstallScript”或“Call a DLL from InstallScript MSI”(根据项目类型选择)。 d. 在“Source Location”中选择C++ DLL文件,并在“Function Name”中输入要调用的函数名(例如上述示例中的SetMsiProperty)。 e. 保存并编译InstallShield项目。
  3. 获取属性值。在InstallShield项目中,可以使用InstallScript或InstallScript MSI脚本来获取属性值。具体的步骤如下:
  4. a. 打开InstallShield项目,进入“Script Files”视图。 b. 在“InstallScript”或“InstallScript MSI”下的脚本文件中,使用相应的函数来获取属性值。例如,在InstallScript MSI中,可以使用MsiGetProperty函数来获取属性值。示例代码如下:
代码语言:txt
复制
STRING svPropertyValue;
MsiGetProperty(ISMSI_HANDLE, "PROPERTY_NAME", svPropertyValue, 256);

在上述代码中,PROPERTY_NAME是要获取的属性名称,svPropertyValue是用于存储属性值的变量。

  1. 使用获取到的属性值。获取到属性值后,可以根据需要在InstallShield项目中进行进一步的处理,例如根据属性值来决定安装程序的行为或显示相应的界面等。

需要注意的是,以上步骤仅适用于InstallShield 2019和Windows Installer安装程序。如果使用其他版本的InstallShield或其他安装程序,步骤可能会有所不同。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法提供相关链接。但腾讯云提供了丰富的云计算产品和解决方案,可以根据具体需求在腾讯云官网上查找相关产品和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在保留原本所有样式绑定和用户设置情况下,设置和还原 WPF 依赖项属性

场景和问题 现在,我们假想一个场景(为了编代码方便): 有一个窗口,设置了一些样式属性 现在需要将这个窗口设置为全屏,这要求修改一些原来属性(WPF 自带那设置有 bug,我会另写一篇博客说明) 取消设置窗口全屏后...而我们通过在 XAML 或 C# 代码中直接赋值,设置是“本地”。因此,如果设置了本地,那么更低优先级样式当然就全部失效了。 那么绑定呢?绑定在依赖项属性优先级中并不存在。...绑定实际上是通过“本地”来实现,将一个绑定表达式设置到“本地”中,然后在需要时候,会 ProvideValue 提供。所以,如果再设置了本地,那么绑定设置就被覆盖掉了。...但是,SetCurrentValue 就是干这件事! SetCurrentValue 设计为在不改变依赖项属性任何已有情况下,设置属性当前。...,就还原了此依赖项属性一切设置: 1 _window.InvalidateProperty(Window.WindowStyleProperty); 注意不是 ClearValue,那会清除本地

18420

如何在 WPF 中获取所有已经显式赋过依赖项属性

获取 WPF 依赖项属性时,会依照优先级去各个级别获取。这样,无论你什么时候去获取依赖项属性,都至少是有一个有效。有什么方法可以获取哪些属性被显式赋值过呢?...如果是 CLR 属性,我们可以自己写判断条件,然而依赖项属性没有自己写判断条件地方。 本文介绍如何获取以及显式赋值过依赖项属性。...---- 需要用到 DependencyObject.GetLocalValueEnumerator() 方法来获得一个可以遍历所有依赖项属性本地。...} } 这里 value 可能是 MarkupExtension 可能是 BindingExpression 还可能是其他一些可能延迟计算提供者。...因此,你不能在这里获取到常规方法获取依赖项属性真实类型。 但是,此枚举拿到所有依赖项属性都是此依赖对象已经赋值过依赖项属性本地。如果没有赋值过,将不会在这里遍历中出现。

19040
  • VS 2013 打包程序教程

    图02 MFC 程序属性设置 2.生成你MFC 项目   你需要在Debug 模式下生成(F7)你MFC 项目,确保你程序是没有Error ,要注意地方如下图所示: ?...图05 设置Release 模式属性   当然你还需要对配置好Release 模式生成(F7)一下,要注意地方如下图所示: ?...图09 创建InstallShield Limited Edition项目二 5.设置Application Information   如果你只是自已一个测试那么这个步骤是无关紧要,具体步骤如下图所示...具体步骤如下所示: ? 图14 导入额外dll 文件   这里还有一点需要注意,如下图所示: ? 图15 dll 属性选项 ?...图18 dll 文件属性设置 8.设置Application Shortcuts   这个步骤并不重要,具体操作如下图所示: ?

    1.2K20

    使用Setup Factory安装包制作工具制作安装包

    《基于DevExpressWinform程序安装包制作》、《基于InstallShield2013LimitedEdition安装包制作》,不过基于InstallShield制作虽然可以完成安装包打包操作...目前使用版本是Setup Factory 9.5,不过各个版本之间差异并不大,这个软件在网上也很容易得到(即使是特别版本,呵呵),因此较InstallShield更为方便获取到,在简单对这款安装包制作工具了解后...我们在加入文件后,对执行文件相关参数进行设置处理,如下所示。 对执行文件属性进行设置,根据情况设置相关参数信息,如下界面所示。...2、关于DevExpress相关DLL依赖 在我们完成添加编译完成系统所需相关DLL外,如果我们UI依赖DevExpress,那么也需要引入对应DevExpress相关DLL文件,我们可以一般可以拷贝到发布目录中...对比InstallShield笨重和麻烦,这个软件独立维护安装包也是非常方便一件事情。

    2.2K20

    msi简单使用

    点击项目输出 打包exe进msi 可以添加图标 创建快捷方式 在扩展中可以对安装包属性进行设置,部分属性会在msi文件详细信息中体现,所以可以对属性进行一些伪造欺骗 如果选择True...时,在管理员权限下msiexec会使用SYSTEM权限执行安装: 启动条件 点击view->启动条件 可以设置硬件属性内存、分辨率来检测是否在虚拟机里启动 比如这里要求物理内存必须大于多少字节才启动安装包...msiexec /q /i MsiexecSetup.msi /log 123.log方式输出日志文件,通过对比日志文件进行更详细条件设置 打包exe/二进制文件 MSI安装包中可以添加exe、dll...常用操作是通过文件系统管理添加要执行文件,然后在自定义操作中设置在几个阶段要执行文件,文件释放位置可以使用系统文件夹属性变量 打包安装 加载dll 导出函数 extern "C" __...执行,前提是DLL文件在磁盘上存在并且是64位

    1.1K30

    VS2012程序打包部署详解

    因为每次编译时默认都是采用增量编译,即只重新编译改变了模块,obj保存每个模块编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。...My Project目录定义你程序集属性,被称为项目属性文件夹。...1、设置安装程序集 InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署,具体操作如下图: ?...2、发布程序 在继续往下操作前一定要选择发布,在启动项目的属性设置发布文件夹默认路径设置为安装系统文件夹。 ?...Install能够通过设置dll文件或OCX文件注册,首先要添加注册文件,然后通过设置文件安装属性来指定注册与否,设置如下图。 ? ?

    1.4K10

    BypassUAC

    C++ version CSharp version 两个注意点 DLL形式 C++ dll导出函数方式 C# dll导出函数方式 一个坑 值得研究C2推荐 过掉UAC提示框方法总结 这里主要说是...我测试系统Windows 10 (1909),使用OleViewDotNet工具可以查看系统中COM接口属性信息,注意需要以管理员权限运行。...右键查看CMSTPLUA组件Elevation属性: ? 这里Enabled和Auto Approval都是True表示这个组件可以用来绕过UAC认证,这是第一点。...在vs2019中可以对Akagi项目调试,项目属性设置命令参数为41: ? 直接在函数ucmCMLuaUtilShellExecMethod地方下断: ?...关于C#接口知识,可以从这里了解更多。 DLL 形式 如何使用? dll可以使用系统可信进程rundll32.exe进行加载,这样也不需要调用MarquradePEB。

    2.2K30

    如何使用ADSI接口和反射型DLL枚举活动目录

    写在前面的话 在这篇文章中,我们将告诉大家如何使用活动目录服务接口(ADSI)并结合C/C++来实现Cobalt Strike活动目录枚举。...这里,我们可以使用反射方法来将已编译好C/C++恶意程序注入到目标设备内存之中,下面给出是目前几种比较热门方法: 1、DonutPE加载器 2、反射型DLL注入 3、Shellcode反射型DLL...注入 (点击底部阅读原文查看) 活动目录服务接口(ADSI) 好了,我们回到正题上,也就是如何实现活动目录枚举。...非常好,那么我们重点就要放在如何通过C/C++来构建自己活动目录枚举工具了。...命令输出指定用户属性信息: 总结 在这篇文章中,我们较少了关于活动目录服务接口(ADSI)相关内容,并描述了如何将其与C/C++以及Cobalt Strike结合来实现活动目录枚举。

    1.4K20

    基于C#开发OPC客户端

    OPC作为一整套接口属性和方法协议标准集,与具体开发语言没有关系。...,OpcRcw.Dx.dll,OpcRcw.Hda.dll,OpcRcw.Sec.dll 对于像C++这样语言来开发OPC客户端时,一般需要使用自定义接口方式。...2、自动化接口简介 自动化接口是OPC基金会组织为了方便并统一OPC客户端开发而发布一个接口属性和方法协议集。...该对象还具有OPCGroup默认属性。当添加OPCGroups时,DefaultGroupXXXX属性设置其初始状态。可以更改默认,以添加具有不同初始状态opc组。...当添加OPCItem时,DefaultXXXX属性设置其初始状态。可以更改默认,以添加具有不同初始状态OPCItems。当然,一旦添加了OPCItem,它属性可以被修改。

    3.6K10

    c++动态库和静态库区别_静态库里面包含动态库

    打开工程“属性面板”è”配置属性”è “C/C++”è” 常规”,在“附加包含目录”属性中,键入StaticMath.h 头文件所在目录路径或浏览至该目录。 编译运行OK。...图:v动态库项目属性设置 Build项目即可生成动态库。...打开工程“属性面板”è”配置属性”è “C/C++”è” 常规”,在“附加包含目录”属性中,键入DynamicMath.h 头文件所在目录路径或浏览至该目录。 编译运行OK。...为显式链接到 DLL,应用程序必须: l 调用 LoadLibrary(或相似的函数)以加载 DLL获取模块句柄。...另外如何C++动态库中获取类,附上几篇相关文章,但我并不建议这么做: l 《LoadLibrary调用DLLClass》:http://www.cppblog.com/codejie/archive

    1.8K30

    带你使用PaddleDetection玩转Windows下可视化部署

    本文内容主要包括: 如何进行C++预测编译(生成.sln解决方案) 如何C++预测代码封装成一个dll 如何使用Python调用生成好dll 如何使用C#调用生成好dll 如何进行C++预测代码编译...三、再次经历之前cudnn路径问题,同时需要在属性—常规—配置类型中修改成.dll文件。 四、修改完上述内容后,点击“重新生成”,会发现out/release中出现了main.dll文件。...五、看到dll后,我们仿佛看到了曙光,但是还是需要进行修改,因为这样我们才能被调用,我简化了main.cc文件中内容,并且配置了dll接口,代码如下。...其中有两个dll接口,其中“add”是为了测试。...三、设置dll接口代码以及设置button,相关代码如下 using System; using System.Collections.Generic; using System.ComponentModel

    2.6K31

    常用软件打包类型及静默安装参数(nsis|msi|InstallShield|Inno)

    三、InstallShield   1、用 InstallShield 技术打包程序要使用静默方式安装,首先要在现有的操作系统中创建一个 setup.iss 文件。...这类程序安装文件大部分都可以被压缩软件解压缩,安装文件 setup.exe 属性对话框中应该有“InstallShield (R) Setup Launcher”或者其他类似的字样。...如果变量在文件中找到,则使用指定;否则,其不变。包含文件文件变量最多可达32K。...Inno Setup 制作安装文件,请使用下面的明显,安装完直接重启: setup.exe /sp- /silent /norestart 如何判断哪个安装程序是用 Inno 技术打包?...这类软件都会在安装结束后显示一个确认屏幕(CDex)或者一个设置文件关联方式结束安装屏幕(Winamp) 怎么判断哪个程序是使用 NSIS 技术打包

    14.5K22

    工业党福利:使用PaddleX高效实现指针型表计读取系列文章(2)

    ---- 正文开始: 二、工业场景适配:Windows下PaddleXC++编译并生成dll 本节目录 使用CMake编译PaddleX C++文件生成本地化工程文件 生成开放输入输出接口DLL文件...生成开放输入输出接口DLL文件 接下来打开PaddleX中编译本地化工程文件,因为我要做是分割任务,涉及到其中segmenter部分。 右键segmenter,查看其属性。...在本节中,我以压力表语义分割为例,介绍如何生成具有输入和输出接口DLL文件(在本例中,输入和输出均为图像)。 打开Visual studio 2019,创建一个Windows窗体应用。...因此需要解决问题有两个: 问题一:如何将C#中图像数据传递至C++; 问题二:如何C++中接收图像数据,并将分割结果返回至C++。...可以看到,界面左边是输入原始图片,右边是经过C++代码分割后返回图片。这说明我们成功生成了具有输入和输出接口DLL文件。

    1.5K30

    测试人员代码分析5步法

    理论篇 实际工作中,我们经常面临版本迭代节奏快、需求多、测试时间短、代码量大等现象,当我们决定深入理解代码实现时候,经常会遇到以下两个问题:如何进行代码分析?优先分析哪些代码?...、资源使用完后未释放、函数返回出错等; ③从代码实现结构出发,确定设计接口是否合理、多线程流程是否恰当、架构是否清晰等。...第二步 明确模块名 打开.vcproj工程文件,查看ConfigurationType(2是dll文件,1是exe文件),或者VS里面查看工程属性Properties-ConfigurationType...除了通过搜索关键字方式获取模块关系之外,还可以通过调试和depends.exe等工具来理清楚模块间依赖关系。...第五步 从接口着手去梳理代码结构关系 上例接口ICacheClient实现类是CCacheClient。 ? CCacheClient方法和属性如下: ?

    1.3K100

    使用C#编写一个.NET分析器(一)

    CORECLR_PROFILER 是唯一标识分析器 GUID (现在任何都可以)。CORECLR_PROFILER_ ATH是我们用NativeAOT发布 dll路径。...如何编写一个真正分析器?现在我们需要了解如何公开 IClassFactory 实例。 公开一个C++接口(类似的行为) MSDN 文档指出 IClassFactory 是一个接口。...但是"接口"在C++和C#中意味着不同东西,所以我们不能仅仅在我们.NET代码中定义一个接口,然后收工。 事实上,接口概念在C++中并不存在。实际上,它只是指定一个只包含纯虚函数抽象类。...按照约定,当类实现虚方法时,C++编译器在对象开头设置一个隐藏字段。该隐藏字段包含一个指向vtable指针。vtable是一个内存块,按照声明顺序包含每个虚方法实现地址。...当调用虚方法时,运行时将首先获取vtable,然后使用它获取实现地址。 vtable有更多特性,例如处理多重继承,但是我们不需要了解这些。

    78610
    领券