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

需要一种方法来获取msi安装程序在c#中运行时使用的版本#,而不知道用于安装的msi文件的位置

在C#中获取MSI安装程序的版本号,可以使用Windows Installer API来实现。Windows Installer是一种用于安装、维护和删除软件的技术,它使用MSI(Microsoft Installer)文件来描述安装包。

以下是获取MSI安装程序版本号的步骤:

  1. 引用Windows Installer COM组件: 在C#项目中,需要引用Windows Installer COM组件。右键点击项目,选择"添加" -> "引用",然后在"COM"选项卡中找到并选择"Windows Installer"。
  2. 使用Windows Installer API获取版本号: 使用以下代码获取MSI安装程序的版本号:
代码语言:csharp
复制
using System;
using WindowsInstaller;

class Program
{
    static void Main(string[] args)
    {
        string msiFilePath = "path_to_msi_file"; // 替换为实际的MSI文件路径

        Type installerType = Type.GetTypeFromProgID("WindowsInstaller.Installer");
        Installer installer = (Installer)Activator.CreateInstance(installerType);

        Database database = installer.OpenDatabase(msiFilePath, MsiOpenDatabaseMode.ReadOnly);
        View view = database.OpenView("SELECT `Value` FROM `Property` WHERE `Property` = 'ProductVersion'");
        view.Execute(null);

        Record record = view.Fetch();
        string version = record.get_StringData(1);

        Console.WriteLine("MSI版本号: " + version);

        view.Close();
        database.Close();
    }
}

请将path_to_msi_file替换为实际的MSI文件路径。以上代码使用Windows Installer COM组件打开MSI文件,并执行SQL查询以获取版本号。

  1. 运行代码并获取版本号: 编译并运行上述代码,将会输出MSI安装程序的版本号。

这种方法可以帮助您在C#中获取MSI安装程序的版本号,以便在运行时使用。

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

相关·内容

Windows 系统提权方式汇总

渗透测试,提升自己权限是经常遇到问题,往往渗透中最容易获取权限就是一个webshell,如果网站是架设在Windows系统上,这时就可能遇到这样问题,还有一种情况是在做横向渗透时候,...任意用户以NT AUTHORITY\SYSTEM权限安装msi AlwaysInstallElevated是一个策略设置,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权用户以...安装程序 计划任务 可以使用如下命令查看计算机上计划任务。...无论这个DLL什么位置,函数声明是什么样。...设置项目属性,目标平台修改为需要目标平台,如SQL Server 2012; 将SQLCLR权限级别修改为UNSAFE;修改.Net 框架版本为自己需要版本;语言选择C#

2.8K30

水晶报表13.x(Crystal Reports for VS2010)安装部署经验

用于开发机; MSI 32/64 Bit:运行环境独立安装包,分别适用于32/64平台。..._13_x.msm,40M多那个,其余是语言包和一个CRRuntime_maps_13_x.msm,maps这个不知道干嘛,反正我没并也不影响使用。...原因当然是CR MSI本身就有70M多个头,比40MCRRuntime_13_x.msm+单个语言包就大了那么多 此外这种方法安装完成后,控制面板【添加/删除程序】中会体现CR运行环境: ?...所以正是因为安装时长这个问题,我解决msm法后,毅然决然还是选用MSI法,原因就是后者可以判断,已装过情况下可以不装(例如重装软件),前者就是不管装没装过都要耗一下,反正我是挺在意安装时长这事...容我啰嗦,此法部署时需要扔两个文件到客户机,自然就是CR MSI和软件安装包这俩货了,完了先装CR MSI,再装软件。

1.9K30
  • 使用Redis来存储键值对(Key-Value Pair)

    ---- 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.5及以上 系统:Win10 X64 一、安装Redis服务器 首先,从以下网站下载Redis服务器, https...此次目的是用于以后不再输入文件路径(减少输入路径带来不便),如下图所示: ?...二、安装StackExchange.Redis,用于C#与服务器进行交互 首先,从“程序包管理器控制台”输入以下内容进行安装引用StackExchange.Redis,如下所示: PM> Install-Package...StackExchange.Redis 备注:最新版本不允许使用.DotNet4.0,这里使用.Net4.5,否则将安装不了。...同样,需要C#代码里对应IP地址从127.0.0.1改成192.168.94.250,如下代码所示: //ConnectionMultiplexer cm = ConnectionMultiplexer.Connect

    1.5K20

    这些工具都是你需要

    不过,小白只需知道:eclipse是用来打代码 tomcat tomcat是一个开源轻量级web应用服务器,是解析和运行jsp容器,常用于Java web开发。...eclipse安装包可以oracle官网免费获取 直接百度eclipse选择第一条结果 or 输入地址(长按地址复制链接): http://www.eclipse.org/downloads eclipse...选择一个你想用版本,小黄人习惯选择最新 ? 这是第四个页面。。。。 这里大家需要根据自己系统选择不同版本 ?...下载完成之后得到一个.zip文件,把它解压到你想放位置,比如C盘根目录 or D盘根目录。 双击打开eclipse.exe可执行文件开始敲代码吧 ?...接下来选择下载MSI版本MSI安装版本(当然也可以选择zip版本下载,不过zip版本需要手动配置,小黄人后继会出zip版本教程,敬请期待……) ?

    53140

    Golang环境安装

    Go语言专门针对多处理器系统应用程序编程进行了优化,使用Go编译程序可以媲美C或C++代码速度,而且更加安全、支持并行进程。   Go 语言具有很强表达能力,它简洁、清晰高效。...得益于其并发机制, 用它编写程序能够非常有效地利用多核与联网计算机,其新颖类型系统则使程序结构变得灵活模块化。   ...windows msi安装Go语言环境 下载安装msi文件 https://dl.google.com/go/go1.12.9.windows-amd64.msi, 1.12.9 您可以替换成您想要版本...下载完成之后双击go1.12.9.windows-amd64.msi安装文件,同意协议,选择安装路径,勾选自动给您添加环境变量 检查go是否安装成功, git-bash或者powershell或者CMD...或者 source ~/.bashrc 当然以上命令也使用于macOS系统但是要选择适合arch 操作系统 windows 设置goproxy教程,下载墙外go依赖包 Windows Powershell

    1.3K40

    Python学习 Day 1-简介 安装 Hello world

    需要注意使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台实现。 Python 是一种解释型语言: 这意味着开发过程没有了编译这个环节。类似于PHP和Perl语言。...安装 Python已经被移植许多平台上(经过改动使它能够工作不同平台上)。 您需要下载适用于使用平台二进制代码,然后安装Python。...要使用安装程序 python-XYZ.msi, Windows系统必须支持Microsoft Installer 2.0搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你机器支持MSI。...Windows XP和更高版本已经有MSI,很多老机器也可以安装MSI。 下载后,双击下载包,进入Python安装向导,安装非常简单,你只需要使用默认设置一直点击"下一步"直到安装完成即可。...-O 生成优化代码 ( .pyo 文件 ) -S 启动时不引入查找Python路径位置 -v 输出Python版本号 -X 从 1.6版本之后基于内建异常(仅仅用于字符串)已过时。

    69910

    windows安装Elasticsearch 7.6

    v7.6.2 软件包.msi 使用图形用户界面 (GUI) 安装编辑 双击下载包以启动 GUI 向导,引导您完成安装过程。...您可以通过单击该按钮查看任何步骤帮助,该按钮会显示一个侧边栏,其中包含每个输入框其他信息 ? image.png 第一个屏幕,选择安装目录。...此外,选择放置数据、日志和配置目录或使用默认位置: ? image.png 然后选择是作为服务安装还是根据需要手动启动Elasticsearch。...msi installer configuration 可作为安装一部分下载和安装常见插件列表,可以选择配置用于下载这些插件 HTTPS 代理。...image.png 使用"添加/删除程序"卸载编辑 MSI 安装程序包不提供卸载功能,可以通过Windows控制面板卸载 ? msi installer uninstall

    89920

    Windows上安装社区版MongoDB

    Version下拉列表,选择最新MongoDB Server 4.0版本。 c. OS下拉列表, 应选择Windows 64位X64。 d. Package 下拉列表,应选择MSI。...运行MongoDB安装程序。 例如,从Windows资源管理器/文件资源管理器: a. 转到下载MongoDB安装程序(.msi文件目录。默认情况下,这是您Downloads目录。 b....选择安装类型 您可以选择完整(建议大多数用户使用)或自定义安装类型。如果选择“ 自定义”安装选项,则可以指定安装可执行文件位置。 b....发行版本和.msi 如果您使用Windows安装程序(.msi安装MongoDB , .msi会自动升级到发行版系列(例如4.0.1到4.0.2)。...升级完整版本系列(例如4.0到4.2)需要重新安装。 将MongoDB二进制文件添加到系统 本教程所有命令行示例提供都是MongoDB二进制文件绝对路径。

    2.8K40

    Windows 安装程序文件读取 0day

    该错误存在于MsiAdvertiseProduct函数,调用它将触发以 SYSTEM 权限运行 Windows 安装程序服务文件复制。...第 2 阶段:Windows 安装程序服务将反向并在 C:\Windows\Installer\*.msi 创建一个新文件 第 3 阶段:它将确保打开文件与要打开预期文件匹配,如果匹配,则调用GetFinalPathNameByHandleW...然后安装程序将检查目标文件是否是预期我们情况下打开文件,是的,因此它将继续将文件复制到 C:\Windodws\Installer\*.msi 我成功实现了利用,但我还有一个问题,当文件被复制到...由于 Windows 安装程序服务会篡改目录某些参数,并在写入后立即删除新创建 MSI 包。...“ PoC 将设置 2 个事件,一个用于文件创建,第二个用于文件写入,当第一个事件触发时,PoC 将重新开始搜索 MSI 文件并将存储到一个数组,PoC 将获取这些数组并比较每个文件名如果在某个索引处有不匹配内容

    94920

    Windows 权限提升

    Get-UnquotedService # Write-ServiceBinary #将指定命令补丁添加到预编译C#服务可执行文件,并将二进制文件写入指定ServicePath位置。...这种情况下,可以使用DLL 旁路,应用程序文件加植入该服务使用DLL 安装程序将应用程序目录添加到系统%PATH% 最常见第二种情况,那么需要什么条件?...答案是应用程序清单(Manifests),应用程序通过应用程序清单主动告诉系统需要提示权限。 应用程序清单是一个 XML 文件,它描述并标识了应用程序运行时应绑定到共享和私有并列组件。...应用程序清单可以声明程序执行级别,用来获得应用程序需要特权,有3种设置(虽然没有该设置也是一种设置): asInvoker(跟随父进程,默认用户启动父进程都是explorer.exe,而在UAC...level为”requireAdministrator” ,就能确保触发UAC: 这里是个C#项目,如果想复现请添加C#相关组件,新建项使用应用程序清单模板即可。

    3.6K20

    C#单元测试

    C#程序可以使用NUnit框架进行单元测试,NUnit是.NET语言一个测试框架,和Java语言JUnit同属于XUnit。 NUit官方安装文件msi安装程序和不用安装zip文件。...安装msi或者使用zipdll可以通过NUit提供GUI或则命令提示符进行单元测试。这里不详细叙述。...这里我介绍一个VS插件TestDriven.NET,TestDriven.NET插件是对.NET语言VS IDE一个插件里面集成了一些常用单元测试框架,当然也包括NUit单元测试框架。...,C盘TestDrive.NET安装目录中选择NUit文件nunit.framework.dll添加引用(NUit文件夹下面有多个版本,选择最高版本,事情而定)。...,Test特性用于测试方法上,使用Asset断言提供方法进行测试。

    2.2K30

    教你Python环境如何搭建

    需要下载适用于使用平台二进制代码,然后安装Python。 如果您平台二进制代码是不可用,你需要使用C编译器手动编译源代码。...Window平台安装包,包格式为:python-XYZ.msi 文件 , XYZ 为你要安装版本号。...要使用安装程序 python-XYZ.msi, Windows系统必须支持Microsoft Installer 2.0搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你机器支持MSI。...Mac OS安装程序过程改变了python安装路径。如果你需要在其他目录引用Python,你必须在path添加Python目录。....pyo 文件 ) -S 启动时不引入查找Python路径位置 -V 输出Python版本号 -X 从 1.6版本之后基于内建异常(仅仅用于字符串)已过时。

    1.5K90

    绝对干货:自定义msi安装执行过程

    有时候我们需要程序执行另一个程序安装,这就需要我们去自定义msi安装执行过程。 比如我要做一个安装管理程序,可以根据用户选择安装不同子产品。...平时使用msiexec.exe习惯了,所以最直接想法就是一个子进程执行:     msiexec.exe /qn 这样固然是能够完成任务,但是不是太简陋了?...下面的C# demo用一个自定义Form来指示多个MSI文件安装过程。Form上放是一个滚动条,并且配合一个不断更新label。...或者通过它传递我们消息给msi,比如说告诉msi,停止安装,执行cancel操作。使用这个方法需要注意是,当你完成安装后一定要把原来handler设回去。否则以后执行msi安装包可能会出问题。...这样,一个支持cancel自定义UI安装控制程序就OK了(demo哈)。如果要安装多个msi只需Install方法循环就可以了。

    2K90

    MySQL安装配置与连接Navicat

    一种是只需要解压; 具体下载界面区别如下图,左边是直接解压,右边是要使用图形界面安装; MySQL提供ZIP Archive和MSI Installer两种安装方式。...它们之间区别如下: ZIP Archive:适用于需要将MySQL部署到多个服务器或者本地开发环境,可以通过解压缩文件不同目录安装MySQL,并且它安装过程相对简单、灵活。...选择只下载即可 安装 解压安装包 将下载压缩包解压到你想安装MySQL位置,因为这个版本是不需要安装,解压即可。这个路劲需要记住,不止一会儿配置变量,更多是以后开发使用中有问题方便排查。...配置关键参数 解压目录下新建一个my.ini文件 创建一个txt文档,然后另存为即可 另存为时候,保存类型选择所有文件 新建my.ini写入配置参数,参考如下: 目录要使用...Archive:归档存储引擎,适用于一些需要长期归档或备份历史数据场景。它压缩比例非常好,但是不支持索引、事务以及DELETE操作。 CSV:把数据存储CSV文件,适合于导入和导出大量数据。

    3K40

    1.Powershell基础入门介绍与安装升级

    随着.NET FrameWork开源和跨平台,最新版本PowerShell 使用 .NET Core 5.0 作为运行时,此时它可以 Windows、macOS 和 Linux 平台上运行。....zip 安装过程创建注册表项: 描述: 从 PowerShell 7.1 开始,MSI 包将创建用于存储 PowerShell 安装位置版本注册表项。...所有预览版本和次要版本 值都是相同。 每个主要版本 值都有所变化。 安装方式: 安装 MSI 包 : 下载后双击安装程序并按照提示进行操作。...# 如果需要与其他版本并行运行 PowerShell 7.1,请使用 ZIP 安装方法将其他版本安装到其他文件夹。...配置文件脚本让这些自定义对每个会话都可用,不必手动重新创建它们。 PowerShell 7 ,配置文件位置路径发生了更改。

    7.1K20

    Windows 10上安装Node.js初学者指南

    引言Node.js是是一个强大JavaScript运行时环境,建立ChromeV8 JavaScript引擎上,让你能够服务器端运行JavaScript。...对于初学者,我推荐LTS版本,因为它稳定性和延长支持。点击LTS按钮下载Windows安装程序(.msi文件)。...确保选择与你Windows架构(32位或64位)相匹配版本浏览器右上角点击 文件显示 步骤2:安装Node.js和npm下载安装程序后,运行.msi文件开始安装向导。...按照安装向导提示操作,点击“下一步”同意许可协议,选择安装文件夹(你可以保留默认位置,也可以修改安装路径到D盘), 这里教大家一个简单方法:鼠标光标移到C后面,编辑安装路径,将C改为D...你已经在你Windows 10上成功安装了Node.js和npm。如果你有任何问题或需要进一步帮助,都可以随时向我提问哟

    43610

    带你尝试新版本更新!

    目前 Visual Studio 支持 Windows 和 MacOS,已经安装了 .NET6 SDK 机器上,发布桌面程序可以 Windows 和 MacOS 上运行,如果要支持 Android...这是因为 Windows 和 MacOS 可以通过安装 .NET6 Runtime 去运行程序,运行是 .dll 文件(IL中间代码), Android 和 IOS 都是发布和运行本机代码。....NET6 运行时有 android 和 ios 特殊标记,要支持移动应用,需要指定名称,如要支持 Android, .csproj 文件: net6.0...,还没有出现; Crossgen2 Roslyn 是 C#用于语法分析和编译 C# 代码 API 集,可以将 C# 代码编译为 .dll; crossgen2 可以编译成本机代码不是...(AoT)编译 发布时将 Blazor WebAssembly 应用程序.NET代码直接编译为 WebAssembly,以显着提高运行时性能;这样可以减少一些 .dll 文件; SPA集成

    3.8K20

    Web-第三十二天 WebLogic中间件【悟空教程】

    表述:中间件是一种独立系统软件或服务程序,分布式应用软件借助这种软件不同技术之间共享资源, 中间件位于客户机服务器操作系统之上,管理计算资源和网络通信 1.1.2....Coherence:可靠、高度可伸缩对等集群协议之上提供了复制、分布式(分区)数据管理和缓存服务 Logs:系统日志目录 Modules: weblogic运行时需要jar文件 user_projects...Autodeploy:当Weblogic服务实例与开发模式运行时,此目录下应用程序(ear, war)等将被自动展开服务 Bin:存放域中可执行文件 Config:本域相关配置文件 Console-ext...需要注意是,集群WebLogic Server必须版本号一致。...就使用本地缓存配置信息启动.这就是MSI模式.

    3.6K40

    python打包exe方法

    /~gohlke/pythonlibs/ 2.安装 whl :pip install whl安装包 或msi双击安装 3、安装完成后,python安装目录下Scripts文件夹下,生成cx_freeze...当然,这是比较简单程序,所以相关依赖文件比较少,当引入外部包比较多时候,并且希望只生成一个.exe文件时候,可以使用如下命令: cxfreeze D:/hello.py –target-dir...5、如果要生成可安装文件,则需要使用”distutils setup script“方式,也就是需要建立一个setupy.py文件方式。...这里,简单建立一个setup.py文件用于生成上述hello.py文件安装文件包“。...其中,dist文件包含hello.py程序安装文件 build文件夹下包含hello.py程序可执行文件,也就是hello.exe 发布者:全栈程序员栈长,转载请注明出处:https://

    88020
    领券