问题标签 [wix3.8]

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 投票
2 回答
1363 浏览

wix - WiX 在卸载但不更新时删除文件

我有一个可以在安装时给出正确标志的应用程序(/logLevel=debug安装时在服务启动时传递给应用程序)。我们的更新过程是自动卸载,然后使用新的 MSI 包安装。我知道 WiX 内置了补丁功能,但这是我们的流程。

logLevel参数类似,我想UPDATE="true"在卸载期间在命令行上传递一些效果。当此参数传递给卸载程序时,它不应删除日志文件。目前我们每次都删除文件,但希望在更新期间保留日志文件。这就是我现在正在尝试扩展的内容:

而且我一直在使用类似于以下内容的代码,但它似乎不起作用:

我不确定我是否没有UPDATE正确初始化变量,或者这是否真的是一些无法以这种方式实现的预处理。我认为它不起作用,因为这些构造在预处理器文档页面上进行了描述,但是,/logLevel以及各种其他参数似乎在运行时安装时工作正常。我完全是 WiX 文盲,并且一直试图阅读他们的文档但无济于事,任何有用的链接表示赞赏。

0 投票
1 回答
825 浏览

wix - Wix 回滚安静执行自定义操作不起作用

我想安装和启动Redis(对于 Windows)作为我们软件包的一部分。服务的安装和启动正常,但是在安装过程中出现错误,随后回滚,回滚后服务没有被移除。

谁能帮我找出我在这里做错了什么?另外,我是否也需要单独的删除命令,或者回滚也适用于卸载?

(像 [#fil5E85DBB2FFC8A2CFA55EDCADD8376C1F] 这样的值是使用 HeatDirectory 为 redis-server.exe 及其目录生成的 Id)

编辑我有组件

现在也是服务部分:

如何将服务添加到现有组件?

编辑 2

我禁用了自动采集并编辑了输出文件,从而解决了参考问题。我还是有Redis服务无法启动的问题。但是,当我只是在 cmd 中复制粘贴路径(包括配置文件)时,它工作得非常好......

这是代码

编辑 3 - 工作解决方案

有一个权限问题,这就是我修复它的方法:

0 投票
0 回答
314 浏览

wix - WiX:util:User@RemoveOnUninstall 是否支持 MajorUpgrade?

作为基于 WiX 的安装程序的一部分,我有以下带有User元素的组件(除了带有 和 元素的其他File组件ServiceInstallServiceControl

我决定采用 only-major-upgrades 的方式,并将以下元素放入Product

产品的第一次安装按预期工作。在重大升级期间,我希望用户首先被删除(在 期间RemoveExistingProducts),然后再被创建。但它的行为不同:用户几乎在安装结束时被删除 - 例如在服务再次重新启动之后(Process Explorer 仍然可以告诉我服务的用户名,但不再告诉我 SID - 因为服务的用户是服务启动后删除)。

在对各种安装日志进行了数小时的剖析之后,我转而查看了UtilExtensionscauser.cpp的来源,并且可能在(稍微重新格式化以提高 SO 可读性)中找到了解释:

所以我猜这个用户的后期删除确实属于RemoveExistingProducts这种情况下的动作。

感谢您阅读这篇文章 - 现在的问题是:是否可以util:User@RemoveOnUninstall与主要升级策略协作使用?

0 投票
1 回答
989 浏览

wix - WiX 引导程序 - 使用 HexStyle 禁用控件

我有一个 WiX 引导程序主题 xml 文件,我想永久禁用一个控件。我试图设置HexStyleWS_DISABLED链接)的值。但是该控件仍处于启用状态。任何人都知道我是否可以使用HexStyle或知道另一种永久禁用控件的方法。我使用WixStandardBootstrapperApplication.RtfLicense引导程序应用程序。

0 投票
2 回答
5052 浏览

wix - 自定义操作仅在安装时,而不是在更新时,而不是在卸载时

我正在使用 Wix 3.8。

首先,我创建了一个安装程序 (.msi),它在安装过程中执行自定义操作(出于测试目的,它只显示一条消息):

产品元素:

自定义操作

现在,当我执行我的 .msi 文件时,该消息将显示在我的安装中:

消息框

接下来,我修改我的产品代码并增加我的版本号以构建更新:

产品元素:

关于NOT Installed AND NOT REMOVE我期望的情况,当我执行更新时不会出现消息框。但它确实:

消息框

仅在安装时执行而不在更新时执行的自定义操作的正确条件是什么?

0 投票
1 回答
801 浏览

wix - WiX Edit v0.7.5.0 - 检查 .NET Framework 版本 > 3.5

我正在使用 Visual Studio Express for Desktop 2013,因为我使用的是 express 版本,所以我决定使用 WiX 来构建一个简单的安装程序。

我正在使用 WiX Edit v0.7.5.0 并安装了 WiX Toolset v3.8。

我已经成功构建了一个可以工作的 msi,但现在想在等式中添加一个 .NET Framework 检查。

我对使用 WiX 还是很陌生,我已经按照如何指导中的步骤进行操作,并且可以构建一个 msi,其中包括对 .NET Framework 版本 3.5 的检查:

http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/check_for_dotnet.html

一旦我尝试检查 .NET Framework 4.0 或更高版本,我就会遇到错误。

我只是简单地修改了 PropertyRef 和 Condition 如下:

然后,当我运行 Build MSI Setup Package 时,我在结果面板中得到以下信息:

我已经做了很多搜索来尝试解决这个问题,并且遇到了几篇似乎与我所做的一致的文章,唉,我仍然收到上面显示的相同错误消息。

我在这里错过了一些非常简单的东西吗?

0 投票
1 回答
203 浏览

wix - 如何使用 WixUI 在所有对话框中更改横幅的宽度和高度

我正在使用 Wix 3.8 和一个内置的 WixUI 对话框集,名为WixUI_InstallDir

我在对话框中使用自定义横幅:

如何更改横幅的宽度和高度?

0 投票
0 回答
615 浏览

asp.net - 使用 Wix 在 IIS 中注册 ASP.NET 站点

我正在尝试在IIS Express 8. (安装程序还会复制整个站点。)安装程序不会完成,但会回滚。我尝试了很多不同的东西,但现在我正在使用这段代码:

我一直在使用 Wixtoolset 文档和一些在线教程,但它们大多是代码示例,并没有真正解释太多。我在 WiX 3.6-Windows Installer XML 开发人员指南中也没有找到任何内容。所以我有点卡在这里。

这些是我可以在日志中看到的一些错误:

我尝试修复 IIS,也尝试安装 WebAppPool,但也会回滚。

更新

这似乎是 IIS Express的问题,因为安装 IIS 时我没有问题。我会看看我是否可以解决这个问题。

0 投票
1 回答
103 浏览

wix - 使用 WiX 3.8 - 如何确保最初正确显示 EULA?

我有一个我正在编写的插件的 WiX 3.8 设置项目,虽然大多数东西都可以正常工作,但显示 EULA 似乎是一个挑战。

我手头有 RTF 文件 - 我在我的设置中引用了它,如下所示:

该文件存在,它是一个有效的 RTF(从 Winword 文档转换而来) - 但是当我启动我的设置(从 MSI)时,我得到这个屏幕:

在此处输入图像描述

EULA 在哪里?!?!?它就在那里 - 一开始只是不可见。我需要在表格周围摆动,用鼠标玩一会儿,然后突然出现文本。

不是一个非常好的用户体验......任何想法为什么会发生这种行为?

0 投票
0 回答
60 浏览

wix - WiX - 卸载补丁但保留文件

嗨,我使用 Purely WiX修补方法。我在卸载时遇到了问题,因为我修改了一些文件并且补丁不会替换它们 - 这很好,但是现在当我卸载补丁时,那个没有被替换回基本状态的文件。

小例子:我正在安装 V1 file1.txtfile2.txt我在file1.txt中添加了 1 行。现在我正在使用带有file1.txtfile2.txt的补丁,这些文件是在补丁中修改的。file1.txt被修改得更早,所以补丁不会替换它,file2.txt处于原始状态,所以它被替换了。一切都很好,但现在我正在卸载补丁(“程序”,然后在控制面板中“查看已安装的更新”)。File1.txt被替换为我安装 V1 时的状态!所以我丢失了我之前添加的那一行...... file2.txt也回到了那个状态 - 但它很好。

问题:有没有办法在卸载补丁上保存file1.txt状态?但如果file1.txt处于原始状态,则从 V1 安装程序获取file1.txt (如file2.txt