问题标签 [wix-extension]

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 投票
5 回答
21753 浏览

user-interface - 如何将 UI 添加到 WiX 3 安装程序?

我试过<UIRef Id="WixUI_Minimal" />了,但我得到“未解决的对符号 WixUI:WixUIMinimal 的引用”。我究竟做错了什么?

0 投票
3 回答
1711 浏览

wix - WiX 编译器扩展教程?

我需要创建一个 WiX 扩展来处理与 HTTP API (httpapi.dll) 的交互,以便我可以为正在安装的WCF服务设置 URLACL 和SSL绑定。

据我了解,我需要创建一个 WiX 编译器扩展,以便我可以定义 XML 语法 ( XSD ),然后实现一个编译器将 XML 转换为MSI中定义的表中的记录。

我已经启动并运行了大部分,但我对如何设置我的项目以使用 XsdGen 自定义工具感到困惑,而且我确信在那之后还有更多的问题潜伏在角落里。

是否有完整的教程展示如何创建 Wix 编译器扩展?

0 投票
5 回答
27246 浏览

permissions - WIX:授予文件夹权限

我已阅读所有相关主题,但尚未找到问题的完整答案。

我想授予用户组对程序文件下文件夹的系统和读取和执行权限的完全权限。不多也不少。

我知道有 3 种方法可以使用 WIX 授予文件夹权限,但没有一种方法对我有好处,我将解释原因:

1)常规权限元素:

问题:它在外国操作系统上失败,因为它不知道“用户”关键字。我也用 SID 试过了。除此之外,我需要将 Permission 元素放在 Test 目录中的每个文件下(但如果这是唯一的情况,我会管理的)

2)WixUtilsExtension PermissionEx 元素:

问题:该文件夹还保留 Program Files 文件夹的默认权限。我不能允许这样。

3)带有 Sddl 的 PermissionEx:

问题:此元素仅在使用 MSI 5.0 安装时可用。我正在使用安装程序 3.01。

我很乐意获得任何解决方案,包括具有自定义操作的解决方案......

0 投票
1 回答
267 浏览

iis - 我可以使用 Wix IIS 扩展设置 IP 限制吗?

是否可以通过 Wix 安装程序为 IIS 站点设置 IP 地址限制?我没有在 IIS 扩展文档中看到它。我希望该站点仅可用于一个特定的 IP 地址。

谢谢!

0 投票
1 回答
662 浏览

visual-studio - 我在 WiX 库项目中引用了一个 WiX 扩展——如何避免在使用这个 wixlib 的其他项目中引用这个扩展?

我在 WiX 库项目中引用了 WiX 扩展。这个 WiX 库项目本身被我的主要 WiX MSI 项目引用。为什么主项目还必须引用 WiX 扩展,即使它并不直接需要它?

我想让我的 wixlib 尽可能自包含,以便其他使用它们的项目不需要了解它们的内部工作原理。

我正在使用 WiX (3.0.x) 的最新稳定版本。

0 投票
1 回答
1226 浏览

installation - 为 Windows 防火墙以外的其他防火墙产品添加防火墙例外 - 例如 Norman、Norton 等

我有一个 WiX 安装程序项目,其中我使用WiX FirewallException添加了两个防火墙例外作为安装程序的一部分。这在客户端机器使用 Windows 防火墙时非常有效,但我收到报告称用户在使用 Norman 的个人防火墙时无法运行该解决方案。关于这个的一些问题:

  • 其他防火墙产品一般会遵守添加到 Windows 防火墙的规则吗?如果是这样 - 这只是一个导入还是防火墙产品会始终遵守对 Windows 防火墙规则的更改?
  • 是否有任何通用方法来添加防火墙例外,以便所有/许多防火墙在安装过程中尊重它们,例如 WiX 中的防火墙扩展?
  • 使用netsh会导致防火墙例外添加到 Windows 防火墙以外的其他产品中吗?
0 投票
1 回答
2109 浏览

msbuild - 本地化使用防火墙扩展的 WiX 安装程序

我有一个使用 MSBuild 生成 MSI 文件的 WiX 安装程序项目。WXS 文件包括 WiX 防火墙扩展:

我在 MSBuild 文件中定义了两种文化,定义如下:

我还添加了翻译资源:

这些代表防火墙扩展和 WixUI 扩展的挪威语翻译。当我运行构建时,它使用 en-us 部分成功,但 no-no 部分失败并显示以下错误消息:

几个问题:我不知道C:\delivery目录来自哪里。我没有这样的目录。错误消息中引用的本地化变量已在 Firewall_no-no.wxl 文件中翻译。

当我使用更详细的信息运行 MSBuild 时,我在错误消息之前看到以下输出:

如详细信息所示,MSBuild 任务导致-locLight 可执行文件具有两个参数。不知道这是否是这个问题的原因。关于如何解决这个问题的任何想法?

0 投票
1 回答
1866 浏览

wix - 在 .net 4.0 中构建 wix 管理的自定义操作

我们最近刚刚将所有代码库升级到 .net 4.0,并尝试使用 .net 4.0 在安装程序中构建自定义操作。

我们正在使用 wix 3.5 来做到这一点,我得到了 BadImageException,说它是使用比当前加载的更新版本的 .net 运行时构建的。

wix 3.5 的 makexca 实用程序是否支持 .net 4.0?

0 投票
1 回答
1417 浏览

wix - 如何防止 Windows 用户在补丁期间被删除和创建

我有一个项目使用 WiX 扩展 WixUtilExtension 为我们的 Windows 服务创建用户。当我修补安装(使用 .msp)时,将执行自定义操作 RemoveUser 和 CreateUser。

我不希望这些 WiX 扩展创建的自定义操作在补丁期间运行。

我可以将条件直接添加到MSI的 InstallExecuteSequence 表中的自定义操作 (ConfigureUsers)以防止这种情况发生,但我还没有找到在 WiX 中处理这种情况的方法。

使用 WiX,如何防止在补丁期间执行 RemoveUser 和 CreateUser?

0 投票
1 回答
1029 浏览

wix - WiX3 - util:XmlFile 元素在新用户首次使用每台机器安装时再次执行

我创建了 WiX 安装程序项目,用于在客户机器上部署我的 .net winform 应用程序。该应用程序仅扫描文档并将图像保存到服务器上的数据库中。扫描仪非常具体,公司中只有一台,但大约有。偶尔可以使用它的四个用户 => 应用程序将仅安装在一个专门用于扫描的工作站上 - 大多数情况下它将是免费的,这些用户中的任何一个都可以来,扫描文档并继续他的工作。

=> 我正在进行每台机器的安装:ALLUSERS 被硬编码为 1。

因为生产中的数据库服务器不受我控制,而且我真的不知道数据库将存储在哪里,所以我无法将正确的 ConnectionStrings.config 文件打包到 MSI 存档中。而不是它,安装程序会根据用户在安装期间提供的参数值修改此配置。为了更新连接字符串,我使用 util:XmlFile 元素。connectionstrings.config 文件与应用程序二进制文件一起存储在安装目录中。

一切似乎都运行良好,直到我使用这个每台机器安装模拟了两个用户。我已经在自己的帐户下执行了我的 wix 设置项目,XML 配置文件已正确更新,然后我启动了应用程序并测试了连接字符串是否正常。一切都很好。

然后我切换到另一个用户帐户。快捷方式已经出现在程序菜单中 - 正如我所期望的那样,因为安装是每台机器的。所以我点击了快捷方式,然后(对我来说出乎意料)一个进度条窗口“等到产品 XY 的配置完成”。出现了。(请注意,我的机器语言环境不是英语,在英语语言环境工作站上的消息可能会略有不同)。几秒钟后,窗口消失了,我的应用程序启动了。不幸的是,它无法连接到数据库,因为 connectionStrings.config 文件已被重写 - 连接字符串已使用默认(=不正确)属性值进行了更新。

我一直在研究为什么每当新的用户帐户尝试使用它时设置会再次启动。这是因为快捷方式元素(快捷方式被放置到“ProgramMenuFolder”。有一个卸载操作的请求,AFAIK 需要一个父组件,这个组件需要一个 KeyPath,它必须是 HKCU 下的注册表项。)。当我从 WXS 中删除所有 Program-Menu-Shortcut-stuff 时,切换用户上下文后不会再次启动 MSI。

结果是我有安装程序,它能够根据输入参数配置与数据库的连接。但是以后任何尝试从第二个用户帐户使用该应用程序只会将此配置发送到厕所。在生产环境中,这意味着每次新用户尝试使用该应用程序时,管理员必须来手动更改连接字符串,这当然是不可接受的行为。

这是我的 WiX 源代码的简化版本:

我已经尝试了这些步骤来解决问题,但没有任何帮助:
1)我已经分离了独立组件。
2)我尝试在这些组件下添加未安装。
3) 我尝试在安装过程中向 HKLM 写入注册表值。我为该注册表值添加了 RegistrySearch 和属性,然后将该值用作条件(实际上只是替换了之前的“未安装”)

有人能帮忙吗?我究竟做错了什么?

谢谢指教

马立克