问题标签 [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.
deployment - MsiInstallProduct 和 Installer.InstallProduct 之间的区别?
这两者有什么区别?
MsiInstallProduct和Installer.InstallProduct。从我读过的内容来看,唯一的区别是第一个返回一个 int 来指示安装是否成功。
我目前正在使用 DTF (WiX) 来调用Installer.InstallProduct
. 问题是,这个函数的返回类型是 void。
Installer.InstallProduct
问题:通过DTF调用时如何判断安装是否成功?
installation - 从外部 UI 取消安装
我创建了一个通过调用Installer.InstallProduct来安装 MSI 的 C# 应用程序。我通过调用Installer.SetExternalUI并传递一个ExternalUIHandler
. MSI 设置为静默安装。
这是我的代码:
问题:
如何使用 DTF 从外部 UI 发送“CANCEL”消息以取消正在进行的安装?
wix - 在安装之前获取功能安装成本
我们正在为我们的安装制作一个自定义的助推器/外部 UI。
我们希望提供一个“自定义安装”对话框(如在 MSI 中)以允许用户选择他们想要安装或删除的功能。
目前,我们能够从 MSI 数据库本身(通过在Feature
表上运行 SQL 查询)读取特性(以及其他特性细节,如描述)。
但是,我们还想显示安装功能的成本。Windows Installer 的“自定义安装”对话框能够做到这一点。
我认为我们可以通过执行以下操作来模仿行为:
- 选择一个
Feature
你想得到的成本 - 使用该
FeatureComponents
表,Component
从 1 获取与该功能相关的 - 使用该
File
表,添加FileSize
与 2 中标识的组件关联的文件 - 3 的总和是功能安装的成本
问题:
- 是否有 API(来自 DTF 或 MSI.DLL)我们可以用来在安装之前获取功能的成本?(DTF中有一个
FeatureInfo.GetCost
方法,但不能直接使用,必须先安装产品才能调用FeatureInfo.GetCost
fromProductInstallation
) - 如果没有 API,上面给出的过程是否适合或正确计算功能安装的成本?
谢谢!:)
更新#1
我认为有一种方法可以在开始安装之前通过 API 获得功能安装的成本。我是这样做的:
调用info.name
成功返回特征的名称。但是,调用info.GetCost
将返回InvalidHandlerException
一条消息:“选择管理器未初始化”。
这是我目前所在的位置。
更新#2:
我得到了,InvalidHandlerException
因为我在调用之前没有调用所需的文件成本计算例程info.GetCost
。这是我修改后的代码:
我不再收到 InvalidHandlerException,但返回的所有文件成本都是 -1099511627776。
wix - wix 将功能状态保存到属性或在自定义操作中获取功能状态
我可以将功能状态和操作保存到属性值中吗?喜欢 <Property id="prop" Value=[!MyFeature]" />
如果不可能,我如何在自定义操作中获得功能状态?仅使用 msi.dll 中的 MsiGetFeautureState?
c# - 以编程方式安装 MSI 软件包
我想从我的 C# .NET 应用程序中以编程方式安装给定的 .msi 包,最好使用我的应用程序指定的安装参数(如安装路径、拒绝垃圾软件等)。
我做了一些搜索,但我还没有真正找到任何有用的东西。最有希望的命中是这个话题,但我找不到任何关于这件事的文档Microsoft.Deployment.WindowsInstaller
或文档。WindowsInstaller.Installer
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 使用流编写器的方式有什么奇怪的吗?
visual-studio-2010 - DTF 包含在新的 WIX 版本中 - 寻找 VS2010 的示例
寻找我可以测试和学习的 VS2010 示例。
wix - 将临时行添加到自定义表
我爱上了CustomTable
构建数据驱动的 WiX 安装。我有一个自定义操作,我需要在安装过程中对十几个对象执行该操作。我没有在序列中包含12 个<Custom Action=
... 条目InstallExecute
,而是将所有适当的内容放入 CustomTable 并通过单个 CustomAction 内的循环进行处理。
现在我想利用 WiX 提供的功能,例如XmlFile
与 CustomTables 结合使用。例如,我在安装过程中有一堆 .config/xml 文件要处理;<XmlFile
我想XmlFile
直接向表中添加行,而不是在 Wix 源中拥有一百万个... 元素。配置 IIS 的类似情况,我需要配置许多 WebApplication 和 WebVirtualDirs。
看起来这可以通过将“临时行”插入适当的表来完成 - 即XmlFile
或IIsWebVirtualDir
. 但我似乎找不到任何关于如何使用 DTF 或其他方式执行此操作的示例。
Bob Arnson 在我遇到的关于joyofsetup的旧帖子中提到了这样一个事实,不幸的是我找不到任何其他关于如何实现的参考。
wix - 如何在安装过程中提取和运行文件
我用 C# 创建了一个自定义操作 (DTF)。
在那个 CA 中,我想从 msi 中提取一个文件(在 wix 中声明为二进制文件)并使用一些参数运行它。
我还没有找到任何样本或帮助。
我必须在 msi 上执行请求,但我想要一个样本。谢谢!
wix - 如何使用 WIX DTF 更新已安装产品信息?
使用 DTF,我可以使用以下代码很好地安装产品。
但是我要更新的属性没有设置器。喜欢版本。DTF 中的其他所有内容似乎都针对 MSI 而不是已安装的产品