问题标签 [wix3]

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 投票
4 回答
1786 浏览

excel - 检测是否安装了 Excel 2003 的最佳方法是什么?

我正在使用 Wix v3.0(归结为 MSI 安装程序),并且我正在尝试编写一个条件以确保已安装 Excel 2003。检测机器上是否存在 Excel 2003 的最佳(最可靠)方法是什么?

我看过很多不同的建议,但没有明确或权威的答案。

0 投票
1 回答
3368 浏览

wix - Wix 安装程序和禁用的功能

我正在使用带有功能树 UI 的 Wix3 测试版。我将几个程序集作为单独的组件安装到 ProgramFiles 内的自定义子目录以及 GAC 中。此外,我想将相同程序集的调试版本打包为一个组件,并让用户决定是否安装它们。现在这个带有调试程序集的功能默认是禁用的,但无论如何都会安装调试程序集。

在相关片段下方:

奇怪的是,如果我再次运行 msi 文件并转到“更改”并禁用调试功能,调试程序集将被删除,例如这次逻辑工作正常。

默认 INSTALLLEVEL 为 3。

有什么建议么?

0 投票
4 回答
16015 浏览

installation - 运行 RemovePreviousVersion 时 MSI 不会安装所有文件

我有一个使用 WiX 版本 3 的 MSI 版本。

我们正在部署的产品的所有以前的安装程序都可以在指定的配置下正常工作(即:如果以前的版本存在,请删除,然后安装新版本) - 但是,我们构建的新 MSI 在运行时不会安装所有文件“删除第一个”路径。

如果我们手动删除现有安装,然后运行新版本,则所有文件都已安装 - 当我检查 Orca 中的 MSI 文件时,文件和功能会显示出来并且看起来很好。

我们尝试在打开详细日志和额外日志记录的情况下运行(/l*vx),但是我们可以看到文件是否没有被注册和安装。

有什么想法或建议吗?这把我们逼上了绝路。

0 投票
4 回答
7051 浏览

wix - 如何从 MSI“文件”表中提取数据(文件计数)

在我们的构建过程中,目前有可能将非代码文件(例如图像文件)添加到我们的 Web 项目中,但不包含在 WiX 构建的 MSI 安装程序中。

为了帮助防止这种情况,我想在我们的 WiX 项目的 AfterBuild 目标中执行以下操作:

  • 获取构建的所有文件的计数(来自 Web 部署项目的输出)
  • 获取 MSI 中内置的所有文件的计数(来自 MSI 中的“文件”表)
  • 比较计数,如果不匹配则构建失败

如果我启动 Orca,我可以很容易地看到 File 表和计数,但我不知道如何从 MSBuild 自动执行此操作。是否有一些 API 或其他机制可以从 MSI 中获取这些信息?

我不介意编写自定义 MSBuild 任务来提取 MSI 文件表计数。

0 投票
3 回答
5931 浏览

msbuild - 基于要在 MSBUILD 中使用的用户定义目录创建 wix 片段文件的最佳方法

本着 Si 提出的这个问题的精神:WiX 技巧和技巧。我正在尝试确定基于目录创建 wix 片段的最佳方法。文件收割,可以这么说。例如,在 bin\release 文件夹下,我可以有许多不同的文件夹以及我想在片段中轻松捕获的文件。我一直在通过键入它们或使用 wixedit 来做到这一点。

请注意,我没有尝试任何只是在这里进行研究的东西:A)我读了一点关于热量的东西。(http://installing.blogspot.com/2006/04/heatexe-making-setup-easier.html)我不确定是否从 msbuild 运行它?B)我从 Newagesolution 找到了这篇讨论使用 t4 脚本的博客文章:http: //blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html

我想知道其他人正在做什么来解决这个问题。

问候,布赖恩

0 投票
1 回答
376 浏览

wix - 验证用户必须安装至少一项子功能

这是我的应用程序安装程序在 FeatureTree/SelectionTree 中的结构

应用核心
    |_ _ 功能 1
    |_ _ 功能 2
    |_ _ 功能 3

我想确保当用户选择应用程序核心时,他必须选择功能 1、功能 2 或功能 3 中的至少一个。

我知道功能下的条件元素可能会有所帮助,但无法使其正常工作,有人在救援吗?

0 投票
1 回答
381 浏览

wix - 带有类型库的 Wix 3.0 中带有 Heat 的“坏图像”

当使用heat(来自 Wix 3.0.4805.0)从 Visual Studio 生成的类型库中生成 Wix 文档时,我遇到了一个错误。弹出一个窗口,上面写着:

'heat.exe - 坏图像'

应用程序或 DLL c:\path\to\file.tlb 不是有效的 Windows 映像。请对照您的安装软盘检查。

但是当我们按下'ok'后,它会继续并成功生成

看起来wix bugboard 上的这个错误报告说它是在我之前的版本中修复的,但似乎不是. 他们说发生错误是因为它首先尝试将其作为 DLL 加载(失败),然后继续做正确的事情。

这发生在 Windows XP SP3 上。

有人知道解决方法吗?

0 投票
4 回答
3934 浏览

wix - 在 Visual Studio 2008 和 WiX(v3) 中使用 heat.exe 收集 .csproj

我发现 Wix v3 使用工具 (heat.exe) 将信息“收集”到 WiX 片段中。要么我在寻找错误的位置,要么这是很少记录的。

为包含媒体文件的复杂文件夹结构自动生成 WiX 片段(可能使用 heat.exe)的最佳方法是什么:

  • 各种类型(ico/png/xaml/等)
  • 这可能会定期更改(名称/位置/添加/删除)
  • 被归类为“内容”并包含在 .csproj 中

这样它们可以通过 WiX 内置到安装程序中,并且可以承受升级和补丁吗?

背景资料

  1. 我找到了 heat.exe,它似乎解决了自动生成 WiX 片段的要求
  2. 在让“dir”收割机工作时,我注意到“project”收割机(命令行帮助)
  3. 媒体已经在 C# 项目文件中,因此注意到“-pog:Content”可能会做得很好
  4. 粗略搜索发现未提及“项目”收割机的过时文档
  5. 意识到整个项目安装程序可能可以使用“项目”收割机完成,但不确定它的支持程度以及陷阱是什么。
  6. 看到“PUT-GUID-HERE”的生成,并意识到 guid 的自动生成可能会影响升级/补丁。
  7. 意识到必须有人将这些工具用于类似目的,并且可能会为我指明正确的方向。

(公平地)指出 v3 尚未“完成”(因此缺乏文档和教程)。我现在得到的感觉是,在我的构建脚本中自动执行此操作并非易事,而且工具正在不断增长以简化此操作。

0 投票
1 回答
1194 浏览

wix - MSI 按需安装最佳实践?

我正在为我们的产品开发一项新功能,其中的一个组件具有一些相当重要的安全隐患:它作为 WCF 服务运行,并执行一些高特权操作。因此,我希望该组件仅在用户需要时安装(并在不再需要时删除),并以编程方式完成安装。

我研究了广告(特别是指定安装),它似乎是实现这一目标的好机制。 但是,我不确定广告功能的安装是否可以撤消,这对于在不再需要组件时删除组件很有用。我也不完全确定是否可以通过广告实现程序化安装:广告的 COM 类似乎不鼓励

因此,我想知道,如果简单地调用 msiexec 来安装/删除组件会更明智。该组件可以打包在单独的 MSI 中,或者作为我们主 MSI 的单独功能。

您使用了哪些技术来按需安装功能?

0 投票
2 回答
1185 浏览

.net - 通过 WiX 3 检测程序集是否在 GAC 中?

我想在 WiX 3(最好通过条件)中检测特定程序集是否在 GAC 中。我知道该程序集的名称、版本和公钥令牌。有没有内置的方法可以做到这一点,还是我必须编写一个 CustomAction 来做到这一点?我将如何设置 CustomAction?(这将在安装开始之前。)