首页
学习
活动
专区
工具
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或其他安装程序,步骤可能会有所不同。

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

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

相关·内容

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

    在我们开发完软件后,除了极个别案例我们把整个目录复制给客户用外,我们一般都需要做成安装包,方便整个软件的部署操作,以安装包的部署操作可能简单的是复制文件,也可能包括一些注册表、数据库等额外的操作,不过安装包部署肯定是能够给客户提供专业、统一的软件安装体验,同时封装了很多细节方面的处理。在我们日常的基于.NET的开发中,VS2010之前我们还可以使用内置的安装包制作工具,自从VS2012、VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,我自己在这方面也写了两篇随笔《基于DevExpress的Winform程序安装包的制作》、《基于InstallShield2013LimitedEdition的安装包制作》,不过基于InstallShield的制作虽然可以完成安装包的打包操作,不过也不见得是比较方便的打包工具,本篇介绍的Setup Factory是一个非常高效,功能强大的安装包制作工具,在独立于VS之外,我们可以用它作为我们常规.NET开发的安装包制作,简单易用。

    02

    VC++的DLL应用(含Demo演示)

    在大学大一的时候学的是C,然后后来大二的时候专业又开了C++这个课程,然后再后来自己又自学了一点VC++,大三的时候也试着编写过一个MFC的最简单的窗口程序。到大四的时候,自己又做了一个GIS的项目,是用C#.NET来编写的,然后发现C#上手好容易,而且还大部分语法规则都沿用了C,C++的习惯,于是觉得C++实在是没有一点优势可言啊。但这个暑假的实习经历又改变了我的观点:C++在写窗口程序虽然麻烦,但是却什么能做,而且对比C#来说,对运行环境的要求不高,不用像C#程序在安装之前还要安装100M多的运行.NET环境。C++和C#各有优缺,目前我对它们俩的定位是:C++用来写一些底层的程序,比如驱动,或者是一些算法类型的函数接口,然后用C#来调用这些接口并进行界面设计。如何函数的实现跨语言呢?显然DLL是个很重要的内容,故在此对VC++的DLL模块进行介绍。

    02
    领券