来自 C# 自定义操作的 MsiSetProperty

2023-12-28

action1如何从 C# 自定义操作中设置 MSI 属性,到目前为止我已经有了这个,但如何获取句柄?

[DllImport("msi.dll", CharSet = CharSet.Unicode)]
static extern int MsiSetProperty(IntPtr hInstall, string szName, string szValue);

public void SetProperty(string propertyName, string propertyValue)
{
    MsiSetProperty(handle, propertyName, propertyValue);
}

我使用以下行从 WiX 呼叫 CA

<CustomAction Id="CA1" BinaryKey="ca1.dll" DllEntry="action1" />

动作1看起来像这样

public class CustomActions
{
    [CustomAction]
    public static ActionResult action1(Session session)
    {
        session.Log("Begin action1");
        SetProperty("xyz", "123");
    }
} 

您应该能够通过执行以下操作来设置属性:

public class CustomActions 
{ 
    [CustomAction] 
    public static ActionResult action1(Session session) 
    { 
        string xyzProperty = "XYZ";

        session[xyzProperty] = "ABC";
    } 
} 

请参阅克里斯托弗·佩因特的帖子:

http://blog.deploymentengineering.com/2008/05/deployment-tools-foundation-dtf-custom.html http://blog.deploymentengineering.com/2008/05/deployment-tools-foundation-dtf-custom.html

我相信他很快就会对此发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自 C# 自定义操作的 MsiSetProperty 的相关文章

随机推荐

  • WPF 与 Windows 窗体 [重复]

    这个问题在这里已经有答案了 复制 WPF 与 WinForms 或丰富的 UI 与稳定的应用程序 您如何看待 Windows 窗体平台的未来 https stackoverflow com questions 442667 wpf vs w
  • 如何在 Python 3 中停止执行 exec 命令?

    我有以下代码 code print foo if True return print bar exec code print This should still be executed 如果我运行它 我会得到 Traceback most
  • Angular 2——模拟——没有 HTTP 提供者

    Angular 2 0 0 Ionic 2 RC0 Npm 3 10 8 Node v4 5 0 Karma 1 3 0 Jasmine 2 5 2 我正在尝试使用 Karma Jasmine 测试我的应用程序 现在我已经遵循了一些指南 我
  • EC2 网络错误:连接超时

    我创建了一个 Linux 的 EC2 微型实例并启动了它 创建了一个密钥对以及该视频中指定的所有开始内容 http www youtube com watch v hJRSti6DsJg http www youtube com watch
  • java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder

    我正在学习 springboot 和微服务 我已经创建了 3 个服务 并且都运行良好 现在我已经创建了发现服务器 使用 start spring io 添加 Eureka Server 作为依赖项 我的pom xml如下
  • 如何获取 wav 文件中的频率列表

    我正在尝试解码一些音频 这些音频基本上是两个频率 0 为 200hz 1 为 800hz 可以直接转换为二进制 音频样本 https i stack imgur com BPa30 jpg 此示例翻译为 1001011 第三个频率为 160
  • 将 asp.net 5 MVC 6 与 Identity 和 EF 6 结合使用的示例

    我正在使用 asp net 5 和 MVC 6 设置一个新项目 但由于 EF 7 中缺少功能 我想使用 Entity Framework 6 我设置了 EF 6 1 3 并且可以正常工作 Identity 3 0 依赖于 EF 7 因此我已
  • VisualVM 中加载的类

    我的应用程序的堆内存出现问题 我尝试使用 VisualVM 来查找内存泄漏 有件事我无法理解 在 采样器 选项卡中 当我按下 内存 按钮时 我会看到数千个具有实例的类 如果我在 Profiler 选项卡中执行相同的操作 我会看到更少的类 这
  • 用限制分割字符串,其中最后一个字符串包含余数

    例如如果我运行这个 JavaScript var str hello world there var parts str split 2 var p1 parts 0 var p2 parts 1 最后 p1 包含 hello p2 包含
  • d3.js 中的分层图

    我目前正在使用 Graphviz 来可视化控制流图 基本上 可简化的 控制流图是一个 DAG 加上一些指向前一层中的节点的边 后面的边不应影响节点的放置 现在 dot绘制的图形相当整齐 但它缺乏一种简单的方法来添加交互性 例如折叠 滚动 缩
  • 了解可变 Seq

    我对 Scala 还很陌生 并尝试了解可变的Seq 因为是在包里的mutable我期望有一种方法可以让我们在不复制整个集合的情况下追加元素 但没有 方法中的mutable Seq 但在Buffer is and 两者都复制该集合 那么为什么
  • 注册时出错:NoCredentialProviders:链 ECS 代理错误中没有有效的提供程序

    我正在尝试使用 EC2 容器服务 我使用 terraform 来创建它 我已经定义了ecs集群 自动缩放组 启动配置 一切似乎都有效 除了一件事 ec2 实例正在创建 但它们没有在集群中注册 集群只是说没有可用的实例 在创建的实例上的 ec
  • Xmlstarlet - 将一个属性的值复制到另一个属性(如果元素中存在)

    我刚刚了解了 xmlstarlet 但不幸的是我在 XML 方面遇到了很大的困难 所以我希望我能得到一些帮助 比如说 我有这个 XML 文件 test xml
  • Google Sheet API V4(Java) 在单元格中附加日期

    我尝试在单元格中添加日期 但工作表自动将值存储在带有单引号的字符串中 对于在日期中存储值 我们还尝试添加userEnteredFormat但这对我们不起作用 以下是附加请求 requests appendCells fields userE
  • 如何检查鼠标单击是否位于 JavaScript 中 HTML5 Canvas 上的旋转文本内?

    我已经在画布上以坐标 X Y 绘制了文本并保存了它们 我有一个简单的方法来检查鼠标单击是否发生在文本边界内 问题是当我将文本旋转 45 度时 我无法检查旋转文本中是否发生了鼠标单击 简而言之 如何检查鼠标单击是否在旋转的文本或形状内 创建一
  • 使用固定长度和空格填充格式化整数的正确方法

    我有 0 到 包括 100 范围内的整数 我想将它们转换为固定长度 3 的字符串 并带有空格填充和右侧对齐 我尝试使用以下格式字符串 但它为三位数添加了另一个空格 这使得它们的长度为 4 而不是 3 fmt lambda x 3d form
  • 如何在 java 中使用 org.json.JSONObject 将值设置为 null?

    如何在 java 中使用 org json JSONObject 将值设置为 null 我当然可以使用 isNull 读取值是否为 null 但似乎当我输入 null 时 它只是忽略我 JSONObject o new JSONObject
  • VS2017 RC - 尝试配置 IIS Express 时发生以下错误

    安装了 VS2017 RC 启动了新项目 ASP NET Core Web 应用程序 Net CORE 选择个人用户帐户作为身份验证类型 尝试运行不进行任何更改生成的代码 并收到以下错误 尝试为项目配置 IIS Express 时出错 错误
  • 无法从资源目录加载属性文件

    我从 Git 存储库导入了一个项目 并在 Eclipse 中为其添加了 Maven 性质 在资源文件夹中 我添加了一个名为的配置文件myconf properties 现在 每当我尝试从 Java 代码打开这个文件时 我都会得到FileNo
  • 来自 C# 自定义操作的 MsiSetProperty

    action1如何从 C 自定义操作中设置 MSI 属性 到目前为止我已经有了这个 但如何获取句柄 DllImport msi dll CharSet CharSet Unicode static extern int MsiSetProp