问题标签 [custom-action]

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 回答
3385 浏览

.net - 一个 Windows 安装程序中的 32 位和 64 位程序集

我有一个用 C# 编写的应用程序,它依赖于 sqlite 托管提供程序。sqlite 提供程序依赖于平台(有两个同名的 32 位和 64 位应用程序的 dll)。应用程序根据操作系统在运行时加载所需的。

问题是,在创建安装程序时,我无法将 64 位模式 dll 添加到安装项目,因为我收到以下错误:文件“目标”与项目的目标平台“不兼容”。

我会使用其他安装程序,但我有一个必须在设置期间调用的自定义操作。

所以我想知道是否有一个安装程序可以让我添加 32 位和 64 位 dll 并执行用 C# 编写的自定义操作。

一种可能的解决方案是有两个安装程序,但如果可能的话,我想避免它。

有什么建议么?

0 投票
3 回答
2404 浏览

wix - 如何有条件地从托管自定义操作 (DTF) 中排除 WiX 3.0 中“FeaturesDlg”中的功能

我正在尝试使用 WiX 3.0 组装一个安装程序,但我不确定一件事。我想使用该FeaturesDlg对话框允许用户选择要安装的功能,但我需要能够根据之前收到的一些输入有条件地从列表中排除一些功能,最好是来自托管自定义操作。

我看到,如果我在 .wxs 文件中将Displaya 的属性设置Feature为它会执行我想要的操作,但我无法找到在运行时更改该属性的方法。hidden

任何指针都会很棒。

编辑

我尝试使用 SQL 更新会话数据库,但是虽然我实际上可以使用 删除该功能,但DELETE FROM Feature WHERE Feature = 'featureId'如果我尝试使用UPDATE Feature SET Display=0 WHERE Feature='featureId',我会收到UPDATE FAILED错误消息。如果我尝试将值设置Display为已经设置的值以外的任何值,我会收到该错误。

删除该功能几乎已经足够好了,但是如果用户返回并更改一些输入数据,我需要能够返回并重新添加该功能。

0 投票
2 回答
2394 浏览

installshield - InstallShield-2009:基本 MSI:如何在用户取消卸载(回滚)后运行自定义操作

InstallShield-2009 Premier:基本的 msi 项目:

当我希望在卸载期间用户单击取消按钮时运行自定义操作时该怎么办?

我放置了一个自定义操作(一个仅显示消息框的 C# exe)

动作类型:

动作参数:

附加选项:

响应选项:

插入序列:

但是当我取消卸载时它没有触发消息框。如何?

0 投票
2 回答
624 浏览

visual-studio - 将 WinForm 用作 Windows 安装程序自定义操作

我正在从事安装程序项目,该项目需要收集一些信息并在安装过程中对其采取行动(主要是在线密钥检索和注册)。设置项目用户界面模板似乎不灵活且记录不充分,因此我正在考虑将 WinForm 作为自定义操作打开。

我知道这是可能的,因为我在很多地方都看到了它的引用,但这是我的第一次 Windows Installer 体验,到目前为止,它陷入了谷歌搜索的矛盾、部分或过时的信息和猜测......呃......

有没有人(甚至是一个指针)清楚简洁地描述了如何在 VS 2008 WinForm 项目中完成这项工作......

非常感谢您的投入

0 投票
1 回答
701 浏览

command-line - 如何在安装后运行自定义操作,安装后可以在安静或 UI 中运行(WIX)

我基本上希望能够针对文件运行到的目录运行所需机器上已经存在的命令行工具。

即安装程序执行以下操作:

指定文件进入的位置(INSTALLOCATION 变量)

然后在复制完成后运行一个工具,该工具将压缩文件并附加它们以将它们附加到另一个应用程序。

目前我不确定是否调用了任何东西,如果工具失败/不存在等,有没有办法基本上安装这两个步骤并报告进度。

谢谢,杰米

0 投票
1 回答
270 浏览

c++ - 如何在自定义操作中检查取消按钮而不做任何其他事情

我知道当我在日志中放一些东西时::MsiProcessMessage(hModule, INSTALLMESSAGE(INSTALLMESSAGE_INFO), ...);,我可以检查返回值是否为 IDCANCEL 并将 ERROR_INSTALL_USEREXIT 返回给 Windows 安装程序。

如何检查该返回值而无需在日志中添加内容或更改进度条?

0 投票
2 回答
549 浏览

wix - 如何在 WiX 卸载期间删除 .NET 隔离存储设置文件夹?

我想删除使用 My.Settings 等时由 .NET 应用程序创建的隔离存储文件夹。设置文件存储在类似的位置

根据这个问题StackOverflow: Removing files when uninstalling Wix我可以使用以下方法卸载文件夹:

这不支持子文件夹等。唯一的选项是自定义 .NET 操作还是有更简单的方法来删除这些 .NET 生成的设置文件夹?

0 投票
1 回答
382 浏览

wix - 从文本文件创建文件夹并使用 CustomAction 在其中放置虚拟文件

我希望我的 msi 安装程序在特定位置生成一组文件夹,并在每个目录中放置一个虚拟文件。

目前我有以下自定义操作:

这些在 InstallExecuteSequence 中调用:

自定义操作似乎开始了,但只显示一个空白的命令提示符窗口,并且没有生成目录。

自定义操作所需的文件被复制到正确的目录:

这些自定义操作有什么问题,或者有更简单的方法吗?

0 投票
1 回答
1404 浏览

wix - WiX 中的 DTF 自定义操作参考不是有效的 WiX 参考

我可以使用 DTF 工具 (IE MakeSfxCA.exe) 很好地构建托管自定义操作
我的构建后事件命令行如下所示:

"%WIX%SDK\MakeSfxCA.exe"
"$(TargetDir)$(TargetName).CA.dll"
"%WIX%SDK\x86\SfxCA.dll"
"$(TargetDir)$(TargetName).dll"
"$(TargetDir)Microsoft.Deployment.WindowsInstaller.dll"

但是,每当我尝试添加对已编译 dll 的引用时,我都会收到一个错误,说明某些内容的效果


如果我使用 Visual Studio(2010 和 2008)将项目添加为参考,我的 WiX 项目会编译但不使用 dll。当我尝试运行 msi 时收到此消息


我的 wxs 文件看起来像这样

我的操作系统是 Windows 7,我使用的是 .net 4.0,这会有所不同,我使用的是每周构建

0 投票
1 回答
1676 浏览

wix - 带有 DTF 的 WiX 自定义操作...非常困惑

好的,我已经决定使用 WiX 做我想做的事情的唯一方法(感谢我没有写的旧安装程序,我现在必须升级)是使用一些自定义操作。

基本上,我需要在 RemoveExistingProducts 之前备份一个文件,并在 RemoveExistingProducts 之后再次恢复该文件。我认为这就是所谓的“类型 2 自定义操作”。

我想我理解的顺序,但是,我不明白的首先是我如何将数据传递给我的 C# 操作(文件所在的目录来自 WiX)以及如何引用我的 C#(DTF?)操作Binary 和 CustomAction 标记。

另外,所有这些都需要在标签中吗?所有的例子都表明了这一点。

这是我到目前为止在 .WXS 文件中的内容...

我需要备份的文件是以前安装的设置文件(需要保持完整),它位于目录中:

甚至有一个组件标签,虽然我需要备份已经存在的文件:

这是引用 Visual Studio (2005) 为我创建的 C# 文件:

非常感谢任何帮助。谢谢!