首页
学习
活动
专区
工具
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,那会清除本地值

20020

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

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

21040
  • 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

    vs2012打包和部署程序成可安装安装包文件(InstallShield

    因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。...My Project目录定义你程序集的属性,被称为项目属性文件夹。...,如下图: 复制并保存注册码,待会要用到,然后点击黄色的Download按钮进行下载,下载完后,就点击安装(安装也什么要注意的地方,你平时如何安装软件的就怎样安装就行了),安装前,如果vs是打开着,先关闭...在继续往下操作前一定要选择发布,在启动项目的属性内设置发布文件夹默认路径设置为安装系统的文件夹。 ​​...Install能够通过设置dll文件或OCX文件的注册,首先要添加注册的文件,然后通过设置文件的安装属性来指定注册与否,设置如下图。 ​​

    6000

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

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

    2.4K20

    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.3K30

    基于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.6K11

    如何使用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.5K20

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

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

    1.9K30

    带你使用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.7K31

    常用软件打包类型及静默安装参数(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 技术打包的?

    16K23

    测试人员代码分析5步法

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

    1.4K100

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

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

    1.6K30
    领券