问题标签 [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 投票
5 回答
4543 浏览

windows-installer - 安装程序更改 PATH 变量,更改不会显示在命令外壳中

我向我的安装程序添加了一个自定义安装操作,以将我的安装目录之一添加到系统 PATH 环境变量中。运行安装程序后,PATH 变量反映了更改(当我通过控制面板::系统小程序访问它时),但是当我启动新的命令 shell 时,PATH 变量不反映更改。有什么我没有做的事情导致这个吗?

0 投票
1 回答
1907 浏览

user-interface - 自定义安装程序操作期间的 UI

在自定义安装程序操作期间显示 UI 的正确方法是什么?

我希望我的 UI 在安装对话框中是模态的,或者,我想要一种在安装程序日志中显示自定义操作的文本/进度的方法。

安装程序是 VS2005 安装项目,自定义操作是 C# 安装程序派生类。

0 投票
2 回答
682 浏览

c++ - 附加到进程时,Visual Studio 2005 锁定

我有一个简单的 C++ DLL,它为 WiX 安装程序实现了一些自定义操作。

调试自定义动作通常很简单:在动作开始时放置一个临时对话框,并在对话框出现时附加到进程。

但是今天,每当我附加到该进程时,屏幕底部都会出现“Microsoft Visual Studio is Busy”气泡。我无法弄清楚这是从哪里来的。有任何想法吗?

0 投票
6 回答
83968 浏览

wix - 卸载 WiX 时删除文件

卸载我的应用程序时,我想配置Wix设置以删除原始安装后添加的所有文件。似乎卸载程序仅删除了最初从 MSI 文件安装的目录和文件,而将后来添加的所有其他内容保留在应用程序文件夹中。换句话说,我想在卸载时清除目录。我怎么做?

0 投票
1 回答
1554 浏览

installation - 使用 WixUI_Minimal 的 Wix 自定义操作

因此,我尝试在应用程序完成安装后(尽管实际上,运行辅助应用程序并不重要,因为它在安装过程中不会与已安装的文件交互),运行另一个程序与应用程序捆绑在一起。相关代码(用“...”替换各种内容:

我检查了目录,文件在我预期的位置,但在安装过程后没有执行。事实上,我什至不想安装该文件,只需运行然后删除即可。但我暂时忽略它。无论如何,我已经看到了几个在对话后触发动作的例子,但由于我目前正在使用<UIRef Id="WixUI_Minimal" />,我认为这并不理想。

0 投票
3 回答
19335 浏览

c# - 标记 MSI,因此它必须作为提升的管理员帐户运行

我有一个 CustomAction 作为 MSI 的一部分。

它必须作为域帐户运行,该域帐户也是本地管理员帐户的成员。

它不能使用 NoImpersonate 标志以 NT Authority\System 的身份运行自定义操作,因为它将无法访问网络资源。

在启用了 UAC 的 Vista/2008 上,如果 NoImpersonate 关闭,那么它将作为执行用户运行,但使用非特权令牌,并且无法访问本地资源,例如 .installState。请参阅 UAC 架构

任何人都知道一种方法

  • 以与从提升的命令提示符运行相同的方式强制 MSI 使用提升的令牌运行?

  • 强制 CustomAction 运行提升(清单中的 requireAdministrator 似乎不起作用)?

  • 确定 UAC 是否已启用,是否尚未提升,如果是,则警告或取消安装?

0 投票
3 回答
3540 浏览

installation - 在没有 SelfReg 的情况下安装 Capicom:未找到 Wix 自定义操作 (Err 2721)

在成功遵循这个问题中的建议后,我为另一个自定义操作添加了几行额外的代码。这个是为了在我试图放入用户系统文件夹的 capicom 副本上调用 regsvr32。但是,我收到错误 2721,从我所见,这似乎是未找到自定义操作错误。有什么建议么?我试图通过调用 regsvr 来保持与我的安装程序以前迭代的一致性,而不是仅仅在安装期间添加注册表项,这可能是一个好主意。:::耸肩:::

编辑:是的,使用 regsvr32 作为安装程序很难看。但是当我下载 Capicom SDK 时,MS 说要安装它。四处搜索发现很多人说这是一种愚蠢的方法……但这也是MS提供的机制。我会听取建议以寻求更好的方法。考虑到它是标准的 Windows 组件,如果在卸载我的应用程序时留下 Capicom,我认为这没什么大不了的。

编辑:嗯。显然,在 dll 上运行 selfreg 所做的事情之一就是创建一个随机种子以添加到注册表中。不确定它使用什么机制来生成这个种子,但我怀疑自己生成一个会被认为是低俗的,特别是如果我给所有用户提供相同的种子。不确定.... 显然,如果我跳过这个 Capicom 会自己做,所以我很好。

0 投票
6 回答
130608 浏览

wix - 如何添加仅在卸载时发生的 WiX 自定义操作(通过 MSI)?

我想修改 MSI 安装程序(通过WiX创建)以在卸载时删除整个目录。

我了解 WiX 中的RemoveFileRemoveFolder选项,但这些选项不够强大,无法递归删除具有安装后创建的内容的整个文件夹。

我注意到类似的 Stack Overflow 问题Removing files when uninstalling WiX,但我想知道这是否可以更简单地使用调用批处理脚本来删除文件夹来完成。

这是我第一次使用 WiX,我仍然掌握自定义操作的窍门。将在卸载时运行批处理脚本的自定义操作的基本示例是什么?

0 投票
5 回答
2219 浏览

.net - 如何在 .NET 自定义操作中使用企业库日志记录

我有一些从我的应用程序中使用的库代码,也被 Visual Studio 安装程序项目中的 .NET 自定义操作使用。库代码反过来使用企业库日志记录块来进行日志记录。如何在 msiexec 中运行的自定义操作的上下文中将配置信息获取到企业库?在我对 EntLib 进行任何调用之前,是否可以在代码中引导配置机制?

更新:我制作了一个看起来可以工作但依赖于使用反射设置非公共静态字段的hack。EntLib 与 .NET ConfigurationManager 的耦合如此紧密,这是一种耻辱。

更新 2:虽然该 hack 在测试平台中有效,但在 msiexec 的上下文中运行时,程序集加载器找不到配置文件中引用的程序集。fuslogvw表示AppBase是windows system32目录,这有点意思。我不明白为什么会找到自定义操作程序集的清单依赖项(位于自定义操作程序集旁边的 [TargetDir] 目录中),但在配置文件中调用的动态加载程序集却没有。看不到任何解决方法。

0 投票
1 回答
3966 浏览

delphi - 如何编写自定义操作 DLL 以在 MSI 中使用?

这是我打算自己回答的问题,但请随时添加其他方法来完成此任务。

我正在打包一个应用程序以用于各种配置,并且我确定在我的 MSI 中执行自定义逻辑的最可靠方法是编写我自己的自定义操作 DLL,该 DLL 将能够从 PROPERTY 表中读取/写入,杀死一个进程,确定一个应用程序是否需要升级(然后将答案记录在 PROPERTY 表中),并写入标准 MSI 日志。