问题标签 [wixsharp]

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 投票
0 回答
137 浏览

wix - 从旧 Wix 项目升级不会卸载旧实例

我已经升级了一个旧的基于 Wix 的安装程序,它同时具有一个 MSI 生成项目和一个引导程序项目(在 Visual Studio 中)。引导程序通过检查 .Net 先决条件/下载来对 MSI 进行排序。新的 Wix# 项目只生成了一个 MSI,它安装和工作都很好,除了我无法用它来替换旧的安装。我已经设置了新项目 UpgradeCode 以匹配我在旧 MSI 项目中看到的内容(并且在卸载列表中的 Windows 注册表中)。我看到 UpgradeCode 正在生成到 WXF 文件中。但是当我无法让它工作时,我尝试将其设置为与自安装引导程序中的 UpgradeCode 匹配(这是最终用户运行的)。那没有帮助。

我在这里这里读过类似的经历。我还设置了几种不同的升级策略,包括:

和:

和:

以及这些主题的各种变化。我所做的一切都没有影响行为,也就是说,在安装后,应用程序的旧版本和新版本都列在添加/删除 Windows 列表中。这条迁移路径是否缺少一些秘诀?

更新:

我已经意识到我的最后一次片段尝试实际上是有效的*。它会触发除 Windows 添加/删除程序中的条目之外的所有内容的删除!这可能是由于新安装程序中应用程序的名称更改造成的吗?或者它可能由于旧的引导程序而仍然存在,因为我正在使用旧 MSI 的 UpgradeCode 而没有对引导程序做任何特定的事情?

更新2:

“旧”安装程序具有安装程序的 MSI 和 EXE(引导程序)版本。如果我只是使用旧的 MSI 安装,然后运行新的 MSI,一切正常。因此,这似乎与运行未删除的引导程序 EXE 有关。

0 投票
0 回答
97 浏览

wix - 如何使用 WixSharp 注册 ActiveX 控件?

我正在为我的组织在 Wix 中重新创建一个旧安装程序。我们需要对其进行更改,并在此过程中对其进行改进。我建议的改进之一是通过 Windows Installer 注册我们的 COM 对象,而不是自行注册。我在 COM 库上运行 heat.exe 并得到了这个:

我使用的是 Wix#,因为这是我们在上一个项目中使用的(它要复杂得多,而且 C# 代码更容易让我们的开发人员阅读)。我看到 Wix# 中有一个ComRegistration类,但我看不到如何将它们嵌套在TypeLibxml 元素中。我以前从来没有注册过 COM 对象,所以我对 Heat 生成的片段实际上做了什么有点迷茫......

编辑:为澄清起见,我正在尝试在 Wix# 项目中使用此 XML,作为参考以使 C# 等效或直接将其注入 XML。

0 投票
1 回答
273 浏览

c# - 在使用 wix sharp 在 Visual Studio 中构建 msi 之前执行 Post Build 事件

我有几个项目会产生几个参考。并在最终生成 MSI 文件的安装程序项目中;使用 WIX 锋利。

编写了预构建事件以将引用从不同文件夹复制到 MSI 的打包文件夹。它工作正常,MSI 成功生成。

现在我想使用代码签名证书对 MSI 进行签名,问题是在 MSI 构建开始之前执行构建后事件,并且由于没有 MSI,因此构建出现错误。

我正在使用 Visual Studio 2017。

我正在执行的后期构建代码

0 投票
1 回答
156 浏览

wix - Wix / WixSharp 安装程序。跟踪用户取消安装事件

我正在使用 WixSharp 开发安装程序。当用户单击取消按钮(取消/中止安装)时,我想跟踪(捕获、订阅等)事件。

我想在用户输入数据的阶段以及安装文件过程中进行跟踪。最好不要更改标准的 UI 对话框,而是使用自定义操作或其他东西。但是,如果更改 UI 是唯一的方法,那也没关系。

在此处输入图像描述

项目 UI 类型是 WixUI_InstallDir。

感谢关注。

0 投票
1 回答
330 浏览

upgrade - 升级根本不起作用,安装另一个版本的应用程序(Wixsharp,自定义引导程序)

我是 wix/wixsharp 和引导程序的新手。我创建了一个安装程序并提供了 ProductID、UpgradeCode 和版本。安装程序工作正常,但是当我创建新的安装程序并提供不同的版本时,它只是允许用户安装另一个版本的应用程序,并且可以在程序文件中看到机器人。

如果我使用之前安装的相同文件,它会提供按预期卸载的选项,但是当我使用升级后的文件时,它不会提供升级或修复选项。

任何人都可以帮我解决这个问题。这是我正在使用的代码

在第二个版本中,我只是更改 Version("1.1.209.10040") 保持其他一切相同。

请让我知道是否需要任何其他代码部分,因为我真的很新我不确定我是否共享了所有必要的信息。

0 投票
1 回答
211 浏览

upgrade - Wixsharp 升级不保留以前的设置,如数据库数据和其他配置

我正在使用 wixsharp 构建我的安装程序。每次我提供一个新版本时,我都想更新我的所有 exe、dll 和其他二进制文件,但我想保留手动更改的设置,例如我们可以选择将一些密钥存储在数据库中,这将在程序文件的应用程序文件夹中创建一些文件夹。我想保留这些数据并替换二进制文件,但是当我升级时它也会删除这些数据。

我正在使用下面的 wixsharp 代码来实现升级。

我面临的另一个问题是,当我们安装第二个版本时,它没有显示升级选项,而只显示安装选项(如全新安装),最后它要求用户允许卸载产品,即卸载旧产品看起来,但它看起来对用户不友好,因为用户可能会觉得他/她为什么要卸载产品。我只想要一个升级选项,它可以在不向用户显示后端发生的情况下进行升级。

0 投票
1 回答
117 浏览

c# - 安装后使用 Wix 更新 app.config#

我对 Wix 和 wix# 完全陌生,我正在尝试在安装完成后更新 app.config。我可以通过使用 Wix Util 扩展来实现它util:XmlFile,但我希望它由 wix# 完成 CustomDialog UI

下面是我尝试过的代码

在 next 之后创建了一个CustomDialog并将其值设置为会话变量

我能够在其中检索会话值,Msi_BeforeInstall但是这里 app.config 路径正在变为 null,因为它没有被复制到INSTALLDIR,当我尝试在Msi_AfterInstall这里执行它时,我没有得到会话变量属性

我也尝试在安装后通过 CustomAction 来做到这一点

但没有获得会话变量属性。我真的很陌生,任何帮助将不胜感激。如果我做错了,或者安装后如何更新我的 app.config,请帮助我。

谢谢。

0 投票
1 回答
175 浏览

c# - 在 C# 中以编程方式安装 FTDI 驱动程序

所以我有一个能够运行.exe驱动程序安装程序的 WixSharp 安装程序。问题是 FTDI 驱动程序是一个名为WIN10_30bit+64bit的文件夹,其中包含以下文件和文件夹:
FTDI 文件

在设备管理器中,如果有连接的设备需要该驱动程序,我可以右键单击该设备,单击“更新驱动程序”并将整个文件夹作为驱动程序分配给它。此操作将安装驱动程序。

有没有办法在 C# 中以编程方式将该文件夹作为驱动程序分配给系统?

0 投票
0 回答
158 浏览

wix - Wix:是否可以从控制面板的“添加/删除程序”中删除捆绑条目?

如果安装程序是由“Microsoft Visual Studio Installer Projects”构建的,无论我运行Setup.exe还是Setup.msi来安装我的程序,控制面板中的“添加/删除程序”只会添加一项来管理我的程序.

https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects

但是如果安装程序是由 Wix 构建的,而 Setup.exe 是由“Bootstrapper.Bundle”构建的,那么当我运行 Setup.exe 来安装我的程序时,控制面板中的“添加/删除程序”会添加两个项目。一个与“Bootstrapper.Bundle”相关联。另一个与 Bundle 中的“MsiPackage”相关联。

是否可以让 Wix 构建的 Setup.exe 与“Microsoft Visual Studio Installer Projects”构建的一样,只在“控制面板添加/删除程序”中添加一项?</p>

0 投票
1 回答
201 浏览

wix - 微星微星。如何卸载组件之间未共享的文件并将共享的文件保留在目录中?

我有 10 个服务,它们共享一些相同的 .dll-s。当我安装这些服务时,dll-s 安装在同一个文件夹中,并且共享的那些不会重复(这是我想要的),但是当我卸载服务时。假设服务号 5,msi 还会卸载该服务的所有 dll-s,包括共享的。如何仅卸载每个服务未共享的那些?