问题标签 [dtf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1580 浏览

deployment - MsiInstallProduct 和 Installer.InstallProduct 之间的区别?

这两者有什么区别?

MsiInstallProductInstaller.InstallProduct。从我读过的内容来看,唯一的区别是第一个返回一个 int 来指示安装是否成功。

我目前正在使用 DTF (WiX) 来调用Installer.InstallProduct. 问题是,这个函数的返回类型是 void。

Installer.InstallProduct问题:通过DTF调用时如何判断安装是否成功?

0 投票
1 回答
518 浏览

installation - 从外部 UI 取消安装

我创建了一个通过调用Installer.InstallProduct来安装 MSI 的 C# 应用程序。我通过调用Installer.SetExternalUI并传递一个ExternalUIHandler. MSI 设置为静默安装。

这是我的代码:

问题:

如何使用 DTF 从外部 UI 发送“CANCEL”消息以取消正在进行的安装?

0 投票
2 回答
1512 浏览

wix - 在安装之前获取功能安装成本

我们正在为我们的安装制作一个自定义的助推器/外部 UI。

我们希望提供一个“自定义安装”对话框(如在 MSI 中)以允许用户选择他们想要安装或删除的功能。

目前,我们能够从 MSI 数据库本身(通过在Feature表上运行 SQL 查询)读取特性(以及其他特性细节,如描述)。

但是,我们还想显示安装功能的成本。Windows Installer 的“自定义安装”对话框能够做到这一点。

我认为我们可以通过执行以下操作来模仿行为:

  1. 选择一个Feature你想得到的成本
  2. 使用该FeatureComponents表,Component从 1 获取与该功能相关的
  3. 使用该File表,添加FileSize与 2 中标识的组件关联的文件
  4. 3 的总和是功能安装的成本

问题:

  1. 是否有 API(来自 DTF 或 MSI.DLL)我们可以用来在安装之前获取功能的成本?(DTF中有一个FeatureInfo.GetCost方法,但不能直接使用,必须先安装产品才能调用FeatureInfo.GetCostfrom ProductInstallation
  2. 如果没有 API,上面给出的过程是否适合或正确计算功能安装的成本?

谢谢!:)

更新#1

我认为有一种方法可以在开始安装之前通过 API 获得功能安装的成本。我是这样做的:

调用info.name成功返回特征的名称。但是,调用info.GetCost将返回InvalidHandlerException一条消息:“选择管理器未初始化”。

这是我目前所在的位置。

更新#2:

我得到了,InvalidHandlerException因为我在调用之前没有调用所需的文件成本计算例程info.GetCost。这是我修改后的代码:

我不再收到 InvalidHandlerException,但返回的所有文件成本都是 -1099511627776。

0 投票
2 回答
597 浏览

wix - wix 将功能状态保存到属性或在自定义操作中获取功能状态

我可以将功能状态和操作保存到属性值中吗?喜欢 <Property id="prop" Value=[!MyFeature]" />

如果不可能,我如何在自定义操作中获得功能状态?仅使用 msi.dll 中的 MsiGetFeautureState?

0 投票
6 回答
36338 浏览

c# - 以编程方式安装 MSI 软件包

我想从我的 C# .NET 应用程序中以编程方式安装给定的 .msi 包,最好使用我的应用程序指定的安装参数(如安装路径、拒绝垃圾软件等)。

我做了一些搜索,但我还没有真正找到任何有用的东西。最有希望的命中是这个话题,但我找不到任何关于这件事的文档Microsoft.Deployment.WindowsInstaller或文档。WindowsInstaller.Installer

0 投票
1 回答
179 浏览

installation - 托管 CA 是否以不同的方式使用流写入器?

是否有人在创建文件时遇到错误,其中自定义操作的临时提取路径被附加?

我有一个执行一些系统检查的托管自定义操作(使用 Microsoft.Deployment.WindowsInstaller 的 64 位 C# DLL)。它在延迟 CA 中写入一个 inf 样式的 key=value 文件。这里真的没有什么花哨的东西,只是一个 File.Create( FullPathToFile )。

但是当我尝试写入文件时,由于某种原因,CA 被提取到的临时目录被包含在内。

MSI (s) (3C:E4) [10:19:36:712]:您好,我是您的 64 位 Elevated 自定义操作服务器。

SFXCA:将自定义操作提取到临时目录:C:\Windows\Installer\MSIC451.tmp-\

SFXCA:绑定到 CLR 版本 v2.0.50727

System.IO.DirectoryNotFoundException:找不到路径“C:\Windows Installer\MSIC451.tmp-*C:\Program Files\Path 属性文件应写入* ”的一部分。在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs , String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at .....

托管 CA 使用流编写器的方式有什么奇怪的吗?

0 投票
1 回答
101 浏览

visual-studio-2010 - DTF 包含在新的 WIX 版本中 - 寻找 VS2010 的示例

如何以编程方式读取 MSI 文件中的属性?

寻找我可以测试和学习的 VS2010 示例。

0 投票
1 回答
831 浏览

wix - 将临时行添加到自定义表

我爱上了CustomTable构建数据驱动的 WiX 安装。我有一个自定义操作,我需要在安装过程中对十几个对象执行该操作。我没有在序列中包含12 个<Custom Action=... 条目InstallExecute,而是将所有适当的内容放入 CustomTable 并通过单个 CustomAction 内的循环进行处理。

现在我想利用 WiX 提供的功能,例如XmlFile与 CustomTables 结合使用。例如,我在安装过程中有一堆 .config/xml 文件要处理;<XmlFile我想XmlFile直接向表中添加行,而不是在 Wix 源中拥有一百万个... 元素。配置 IIS 的类似情况,我需要配置许多 WebApplication 和 WebVirtualDirs。

看起来这可以通过将“临时行”插入适当的表来完成 - 即XmlFileIIsWebVirtualDir. 但我似乎找不到任何关于如何使用 DTF 或其他方式执行此操作的示例。

Bob Arnson 在我遇到的关于joyofsetup的旧帖子中提到了这样一个事实,不幸的是我找不到任何其他关于如何实现的参考。

0 投票
1 回答
1958 浏览

wix - 如何在安装过程中提取和运行文件

我用 C# 创建了一个自定义操作 (DTF)。
在那个 CA 中,我想从 msi 中提取一个文件(在 wix 中声明为二进制文件)并使用一些参数运行它。
我还没有找到任何样本或帮助。
我必须在 msi 上执行请求,但我想要一个样本。谢谢!

0 投票
1 回答
227 浏览

wix - 如何使用 WIX DTF 更新已安装产品信息?

使用 DTF,我可以使用以下代码很好地安装产品。

但是我要更新的属性没有设置器。喜欢版本。DTF 中的其他所有内容似乎都针对 MSI 而不是已安装的产品