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

如何在运行时(安装时)从wix源代码中获取MSI文件所在的路径

在运行时(安装时)从Wix源代码中获取MSI文件所在的路径,可以通过以下步骤实现:

  1. 在Wix源代码中定义一个自定义动作(Custom Action),用于获取MSI文件所在的路径。可以使用C#或VB.NET编写自定义动作的代码。
  2. 在Wix源代码中添加一个Custom元素,指定自定义动作的名称和位置。例如:
代码语言:txt
复制
<CustomAction Id="GetMSIPath" BinaryKey="CustomActionBinary" DllEntry="GetMSIPath" Execute="immediate" Return="check" />

<Binary Id="CustomActionBinary" SourceFile="CustomAction.dll" />

其中,CustomActionBinary是自定义动作的二进制文件,GetMSIPath是自定义动作的入口点。

  1. 在Wix源代码中的安装序列(InstallExecuteSequence或InstallUISequence)中添加一个调用自定义动作的操作。例如:
代码语言:txt
复制
<InstallExecuteSequence>
  <Custom Action="GetMSIPath" Before="InstallInitialize" />
</InstallExecuteSequence>

这将在安装初始化之前调用自定义动作。

  1. 在自定义动作的代码中,使用Session对象获取MSI文件所在的路径。例如,使用C#编写的自定义动作代码如下:
代码语言:txt
复制
using System;
using Microsoft.Deployment.WindowsInstaller;

namespace CustomAction
{
    public class CustomActions
    {
        [CustomAction]
        public static ActionResult GetMSIPath(Session session)
        {
            string msiPath = session["OriginalDatabase"];
            session["MSIPath"] = msiPath;
            return ActionResult.Success;
        }
    }
}

在上述代码中,通过Session对象的"OriginalDatabase"属性获取MSI文件的路径,并将其存储在"MSIPath"属性中。

  1. 在Wix源代码中添加一个属性(Property),用于存储获取到的MSI文件路径。例如:
代码语言:txt
复制
<Property Id="MSIPath" />
  1. 在Wix源代码中的相关位置使用属性"MSIPath"来引用获取到的MSI文件路径。例如:
代码语言:txt
复制
<CustomActionRef Id="GetMSIPath" />

<Component Directory="INSTALLFOLDER" Guid="PUT-GUID-HERE">
  <File Source="$(var.MyApp.TargetPath)" />
  <RegistryValue Root="HKCU" Key="Software\MyApp" Name="Installed" Type="integer" Value="1" KeyPath="yes" />
  <Shortcut Id="startmenuMyApp" Directory="ProgramMenuFolder" Name="MyApp" WorkingDirectory="INSTALLFOLDER" Icon="MyApp.exe" IconIndex="0" Advertise="yes" />
  <RemoveFolder Id="INSTALLFOLDER" On="uninstall" />
  <RemoveRegistryKey Root="HKCU" Key="Software\MyApp" Action="removeOnUninstall" />
  <Condition><![CDATA[MSIPath <> ""]]></Condition>
</Component>

在上述代码中,通过条件"MSIPath <> """来判断是否成功获取到了MSI文件路径,如果成功获取到,则执行相关操作。

请注意,以上步骤仅为示例,实际实现可能需要根据具体情况进行调整。此外,推荐的腾讯云相关产品和产品介绍链接地址需要根据具体需求和场景进行选择,可以参考腾讯云的官方文档或咨询腾讯云的技术支持团队获取更详细的信息。

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

相关·内容

WiX 制作安装包:为 WiX 制作 exe 安装包添加 .NET Framework 前置安装步骤

元素负责定义如何安装一个产品,而 元素负责定义如何安装一组包。...与之前添加引用一样,虽然我们选路径是绝对路径,但实际上写入到 wixproj 文件是一个属性引用,所以不会存在团队协作和跨版本迁移问题。...根据 WiX 3 已开源源码我们可以得知,本地安装 .NET Framework 选取目录为 redist\。...每个 .NET Framework 版本都有自己对应文件名称,如果还想继续用 WixNetFxExtension.dll 中提供安装 .NET Framework 功能,那么官网下载文件后就不能改名字...附源代码 附上必要源码,避免你在阅读教程因模板文件版本差异造成一些意料之外问题。 Bundle.wxs // 除了本文所说改动外,本文件其他内容均保持模板文件原始模样。

75210

WiX 制作安装包:为 WiX 制作 msi 安装包添加 .NET Framework 环境检查

本文是 WiX Toolset 安装包制作入门教程 系列一篇,可前往阅读完整教程。 前面我们制作完成了一个简单 msi 安装包。...本文基于前一篇文章已经建好项目继续: 用 WiX 制作安装包:创建一个简单 msi 安装包 添加 WixNetFxExtension 引用 在 msi 安装包项目的“Reference”上右键,“添加引用...如下是 Walterlv.Installer.Msi.wixproj 项目文件对 WixNetFxExtension 引用代码: 1 2 3 4<WixExtension Include="WixNetFxExtension...小提示 <em>MSI</em> 包只能判断 .NET Framework 是否存在,无法在不存在<em>时</em>执行 .NET Framework <em>的</em><em>安装</em>操作。...附<em>源代码</em> 附上必要<em>的</em>源码,避免你在阅读教程<em>时</em>因模板<em>文件</em><em>的</em>版本差异造成一些意料之外<em>的</em>问题。 Product.wxs // 除了本文所说<em>的</em>改动外,本<em>文件</em><em>的</em>其他内容均保持模板<em>文件</em><em>的</em>原始模样。

1K30
  • WiX Toolset 安装包制作入门教程(目录篇)

    WiX 全称为 Windows Installer XML,是使用 XML 文件创建 Windows 安装程序一组工具集。它开源且完全免费。...本系列教程所需所有源代码都已在 GitHub 上开源,你可以克隆下来学习和试验,也可以选择性忽略。...你可以挑自己想做安装包类型,然后直接在这个类别里面第一篇读至最后一篇。...解决方案 使用 WiX 创建一个简单 msi 安装包 为 WiX 制作 msi 安装包添加 .NET Framework 环境检查 使用 WiX 创建一个简单 exe 安装包 为 WiX 制作...创建最简单安装包过程可能出现问题和解决方案汇总 如何查看用 WiX 制作安装日志 如何调试用 WiX 制作安装包 具体问题 用 WiX 制作安装包:设置 .NET Framework

    2.5K60

    WiX 制作安装包:创建一个简单 msi 安装

    本文是 WiX Toolset 安装包制作入门教程 系列一篇,可前往阅读完整教程。 本文将带大家制作一个简单 msi 安装包。...本文操作基于系列教程一个最简项目,见 准备一个用于学习 WiX 安装包制作 Visual Studio 解决方案。...注意,选择模板要注意这些要点: 图标上标记了“wix”,标签上标记了“WiX” 模板简介说明这是在创建“MSI文件 引用目标项目 在 WiX MSI 项目(在本教程,我取名字为 Walterlv.Installer.Msi.... -->”: 把周围“Component”解除注释(因为我们真的要加打包文件了); 删除“TODO”注释(本教程会继续教你如何完成打包,不需要 TODO 提示了); 在“Component”块添加一行...另外,觉得不错可以提交一下代码,方便后续章节学习。 附源代码 附上必要源码,避免你在阅读教程因模板文件版本差异造成一些意料之外问题。

    1.7K60

    WiX 制作安装包:创建一个简单 exe 安装

    本文开始前,请确保你已经可以生成一个最简单 msi 安装包了: 用 WiX 制作安装包:创建一个简单 msi 安装包 由于 exe 格式安装包自己带了 UI,所以 msi UI 怎么样都是可以不用管...注意,选择模板要注意这些要点: 图标上标记了“wix”,标签上标记了“WiX” 模板简介说明这是在创建“EXE”文件 创建完后,记得去项目属性里改一下输出文件名。...编辑 Bundle.wxs 文件 在 Bundle.wxs 文件,找到放 MSI 文件注释处,将其替换成我们想安装 MSI 文件。 1 2 3 4 5 6 -- <!...Compressed="yes" 表示此 MSI 包会被嵌入到最终生成 exe 文件(反之则会松散地放到外部文件)。...▲ 卸载包 另外,觉得不错可以提交一下代码,方便后续章节学习。 附源代码 附上必要源码,避免你在阅读教程因模板文件版本差异造成一些意料之外问题。

    1.2K20

    使用WiX制作简单MSI安装程序

    是一般使用工具是两个:一个Visual Studio插件,在WiX安装包里面附带,另一个就是WiXEdit,WixEdit是编辑XMLXML源代码图形化工具箱.WixEdit会让你创造体制条件与...MSI和MSM测试wix工具箱.它提供了直观、轻松对话方式编辑wix文件来源。...该包介绍了作为部分 .msi 摘要流提供属性,在资源管理器中将鼠标停留在 .msi 上方就会看到这些属性。 查看 WiX 帮助文件文档 Package 元素其他可用属性。...平台 字符串 此程序包支持平台列表。 对于许多安装程序(例如本示例),最好在 MSI 中将所有安装文件打包在一起。...用户直接许可协议界面进入feature customization界面。当默认情况下安装全部特性,WixUI_FeatureTree比WixUI_Mondo更合适。

    3.6K90

    Wix制作VSPackage安装

    做完VSPackage后,如何打包发布它?其实有很多种打包方式,在这里我只介绍在VS2008下用Wix制作VSPackage安装程序。...为了演示安装效果,别忘了在向导给它添加一个Menu Command。 创建Wix项目 新建一个项目,项目类型选择Wix-》Wix Project,如下图: ?...regpkg /wixfile:VSPackage1.wxs /codebase "\VSPackage1.dll" 其中,代表Package程序集所在目录路径.../nosetupvstemplates耗费时间比较久,但安装程序没有任何提示 要想变成中文,需要下载中文wxl文件,并作为嵌入资源把它添加到VSPackageInstaller项目中...然后修改Product.wxs文件,把Product节点Language1033改为2052,并添加一个CodePage=“936”属性。

    2.5K20

    C# Windows桌面应用打包指南

    在弹出窗口中,选择发布位置,可以是本地文件夹、网络路径或者 FTP 服务器。配置应用程序更新方式,如是否启用自动更新。...选择 “安装项目” 类型,配置项目名称和路径。在安装项目中添加需要打包文件(例如应用程序文件、依赖库等)。配置安装属性(如版本号、安装路径等)。...生成安装包,Visual Studio 会创建 .msi 文件MSI 安装优势:支持自定义安装步骤,例如用户协议、组件选择等。能处理复杂安装逻辑和注册表操作。支持大多数企业环境分发。...使用 WiX Toolset 打包步骤:安装 WiX Toolset。在 Visual Studio 创建一个新 WiX 项目。编写 XML 文件,定义需要打包组件和安装逻辑。...Inno Setup 打包步骤:下载并安装 Inno Setup。使用其内置脚本编辑器,编写安装脚本,定义要打包文件安装路径等。编译脚本,生成安装包。NSIS 打包步骤:下载并安装 NSIS。

    19932

    使用javapackager打包各系统安装

    版本以下,不要下载6及其6以上版本,否则无法打包成功) wix(打包成msi必须下载,没有下载javapackager会提示缺少wix) JDK8 用法 javapackager command...-srcdir dir:要打包文件基本目录。就是我们之前包含jar文件文件夹(注意这里不是java源代码目录) -srcfiles files:-srcdir选项指定目录文件列表。...classPath=path :相对于组装应用程序目录路径。javapackager该路径通常 JAR 文件清单中提取,如果您使用其他命令,则不需要设置。...指定节点在运行时作为选项传递给应用程序-Dapp.preferences.id。此参数与userJVMOptions参数一起使用。...runtime=path:运行时=路径要包含在包 JRE 或 JDK 位置。提供 JDK 或 JRE 文件文件路径

    4.3K20

    WiX 安装包制作最佳实践:Id、UpgradeCode 应该怎么设置?

    WiX 安装包制作,Product.wxs 文件 Product 标签存在一些属性,这些属性应该如何设置才是比较合适呢?...本文是对我另一篇入门教程博客一点补充: 用 WiX 制作安装包:创建一个简单 msi 安装包 Id、Version Id:产品 Id。 Version:产品版本。...如果保持 Product.wxs 文件 Product 元素 Id 属性为 *,那么每次构建一个 MSI 文件都会视为一次“主要升级”(MajorUpgrade)。...在没有配置升级策略情况下,如果有两个不同 MSI 包设置了相同 Id 和 Version,那么当安装了其中一个之后,另一个将无法安装。...双击 msi 文件,Windows Installer 将弹出错误框: UpgradeCode 对于同一个产品,无论其产品 Id、Version 如何变化,都应该保持 UpgradeCode 不变,

    57280

    Wix 安装部署(五) Bootstrapper 捆绑安装

    原文: Wix 安装部署(五) Bootstrapper 捆绑安装 Wixxml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成功能在Windows Installer通过配置能很快弄出来...在Windows Installer中分别在Redistributables和Registry设置就行了,特别是注册,可以直接把目录你自己电脑上拖过来。...但今天要讲,就是wixBootstrapper 项目,制作一个捆绑安装程序,也是Windows Installer没有的。将多个需要安装文件,按照顺序一次性装完。...一、Bootstrapper 初识 起因:wixSetup 项目是无法自动安装.net framework,必须要通过bootstrapper 应用程序去驱动wixBurn引擎来安装...二、如何捆绑 目的:检测.net版本,没有匹配就自动安装,然后再安装我们自己工程。

    1.2K20

    渗透技巧——Admin权限切换到System权限

    0x00 前言 在渗透测试,某些情况下需要用到system权限,例如操作注册表HKEY_LOCAL_MACHINE\SAM\SAM 恰巧最近看到了一篇文章介绍了几种获得system权限方法,于是决定结合自己经验对这方面的技巧做系统整理...《渗透测试msiexec》介绍过利用Advanced Installer制作msi文件方法,这里不再赘述 本节对XPN提到方法做复现,使用wix3制作msi文件 wix3下载地址: https:...//github.com/wixtoolset/wix3 msigen.wix代码可参考如下地址: https://gist.github.com/xpn/d1ef20dfd266053227d3e992ae84c64e...,使用torch.exe将msigen.wixobj编译成msigen.msi文件会报错,如下图 使用light.exe能够成功生成msigen.msi,如下图 虽然报错,但不影响文件生成和功能执行...0x05 小结 本文对常用System权限获取方法做了整理,最后感谢xpn博客和他源代码

    1.8K70

    Jpackage-制作无需预装Java环境Jar可执行程序

    这篇文章我们会先学习如何将 Java 程序打包成一个可执行 Java JAR 文件。然后演示如何使用这个 JAR 文件生成 Windows、Linux、MacOS 上可执行程序。...一个可执行 jar 文件需要包含一个 main 类作为程序入口,并在 MANIFEST.MF 文件中指定 但是为了运行 jar 格式应用程序,必须有一个Java 运行时环境(JRE)。...,最后是要添加到 jar 包文件列表。...Winx3.14 下载:https://github.com/wixtoolset/wix3/releases/tag/wix314rtm 由于 hello.jar 是一个命令行程序,没有 UI界面,因此打包使用...• --win-console:使用控制台窗口启动我们应用程序 • --win-shortcut : 在 Windows 开始菜单创建快捷方式文件 • --win-dir-chooser:让最终用户指定自定义目录来安装可执行文件

    55810

    Python AI小项目打包通关:Pyinstaller和Wix都用上了

    : 参考了文章: 这篇文章真是一盏明灯,没有走一步多余弯路 Pyinstaller如何打包多个资源文件(超详细教程) 文章这个要替换一下,文章是用中文引号,通过不了。...报错解决 关键获取cv2地址:  文件建议用下面这条命令生成exe, pyinstaller main.py -F --paths="D:\ProgramData\Anaconda3\lib\site-packages...Step3: 打包成一个一键安装程序,第一感觉就想到了Wix,然后找到了两篇文章 把Python代码打包成电脑软件和手机App [Wix] 安装部署——起步 想着程序是用pyinstaller打包成exe...要么还是用第一篇文章描述方式先试试 稍微试了一下,后来发现文章要下载Git,然后例子是打包.py文件,和我生成exe有点区别 果断放弃,有点费时。...引用地址,还有需要桌面快捷方式 build之后,生成了msi安装包和一个.cab文件  双击.cab文件之后发现,原来之前exe藏在这里面了 双击msi一键安装之后,发现3件套全了,桌面快捷方式

    98230

    WiX 制作安装包:制作 WPF 安装包界面(入门篇)

    本文是 WiX Toolset 安装包制作入门教程 系列一篇,可前往阅读完整教程。...注意,WPF 项目并不像 WiX 项目一样针对引用绝对路径进行了属性引用处理,因此我们需要自己来做这件事。...双击 WPF UI 项目名称以修改项目文件,将绝对路径改成环境变量引用 $(WIX)(注意这里引用是环境变量,而不是之前 MSBuild 属性,虽然写法一模一样): 1 2 3 4 5 6 <ItemGroup...如果发现无法运行,请前往此篇文章调试和解决问题: 使用 WiX 创建最简单安装包过程可能出现问题和解决方案汇总 如果可以正常运行,那么恭喜你,完成了 WiX 安装包入门教程 Hello World...请回到目录: WiX Toolset 安装包制作入门教程 运行效果: 关闭这个界面后,安装程序也将退出。 附源代码 附上必要源码,避免你在阅读教程因模板文件版本差异造成一些意料之外问题。

    97220

    完全可复制、经过验证 Go 工具链

    对于 Go 1.20,我们采取了一步措施来解决可重复性问题,即在运行时更改链接器,以便在运行时咨询主机配置,而不是在工具链构建硬编码默认值: 这解决了在 Alpine Linux 上链接器二进制文件可移植性问题...Source directory(源代码目录):Go程序包含了运行时和调试元数据完整路径,以便在程序崩溃或在调试器行时,堆栈跟踪包含源文件完整路径,而不仅仅是文件名。...不幸是,包含完整路径使源代码存储目录成为构建相关输入。为了解决这个问题,Go 1.21 将发布工具链构建更改为使用go install -trimpath来安装命令,将源目录替换为代码模块路径。...Windows MSI安装程序。...验证UbuntuGo工具链 Go工具链易重现构建应该意味着在go.dev上发布工具链二进制文件与其他打包系统包含二进制文件相匹配,即使这些打包程序是源代码构建

    34910
    领券