问题标签 [wise]
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.
windows-installer - 我需要检查什么以确保正在运行卸载?
我需要在我的安装程序中设置启动条件,以防止用户直接运行 MSI 文件,除非他们正在运行卸载。(所有其他类型的安装都应该从引导应用程序运行,以确保满足所有先决条件。)
我需要什么条件来检查这个?我试过REMOVE="ALL" OR BOOTSTRAP
(BOOTSTRAP
是我的引导应用程序在启动 MSI 时在命令行上定义的属性),但这也会触发修复安装,这是我不想要的。
windows-installer - 如何强制 Windows Installer 用重命名的快捷方式替换快捷方式?
最近,我们在安装程序中添加了一项功能,需要稍微重命名几个桌面快捷方式(版本号已添加到名称中)。我在让安装程序用新快捷方式替换旧快捷方式时遇到问题。最初报告问题时,正在安装新的快捷方式,但没有删除旧的快捷方式。在解决了这个问题之后,我遇到了一个混合问题:一个旧的快捷方式正在被删除(到目前为止,很好),但另一个不是(不太好),在这两种情况下,新的快捷方式没有安装(甚至更糟)。我已经尝试更改安装这些快捷方式的每个组件的 GUID,我什至曾经尝试更改负责快捷方式的每个合并模块中的 ProductCode 属性,
仅重新引导相关组件,以下是安装状态的日志文件显示的内容(为了帮助调试,我稍微重命名了组件,以便我可以分辨哪些来自旧版本,哪些来自新的):
正如您在日志中看到的那样,新的快捷方式在这两种情况下都应该使用,但事实并非如此。而且我无法解释为什么安装程序使用两个旧快捷方式做不同的事情。
仅供参考:我的开发环境是 Wise Installation Studio 7.0。
编辑:除了当前的 ProductVersion 和 ProductCode 之外,我已将所有内容重置为以前的状态。完成此操作后,安装程序会保留已安装的旧快捷方式,但不会安装新快捷方式。(这与最初报告的行为不同,我能够复制,即旧的快捷方式被安装,新的(重命名的)快捷方式也被安装。)重新引导两个相关组件后,安装程序删除旧的快捷方式,但仍不安装新的快捷方式。(这就是在 XP 上发生的事情。)
重新引导组件后日志中的相关行如下:
前两行似乎表明正在安装新的快捷方式,但实际上并没有。之后的修复将安装新的快捷方式。
当运行可以复制原始问题(升级后存在旧快捷方式和新快捷方式)的安装程序副本时,上面最后两行报告的操作是 Null 而不是 Absent。
编辑 2:当前的行为是旧的快捷方式保持安装,而新的快捷方式没有安装。当我重新 GUID 他们的组件时,旧的快捷方式被删除,新的快捷方式仍未安装。我尝试了 Christopher Painter 的解决方案,但都没有去任何地方。(请参阅我对该答案的评论。)必须有一种方法可以安装新的版本化快捷方式来代替旧的未版本化快捷方式。有没有人可以提供有效的解决方案?
编辑3:事实证明,未安装新快捷方式的新行为是由于我在获取源文件时犯了一个错误,而进入安装程序的那些不是最新的作为那些要被替换的。一旦最新的文件被编译到安装程序中,我就能得到想要的结果(旧的快捷方式,新的快捷方式)。(有关更多信息,请参阅我的答案。)
uninstallation - WISE Uninstaller 不会自行删除
我知道,我知道...停止使用 WISE。这对我来说不是一个真正的选择。我们有太多事情要做,无法编写一个全新的安装程序并更改我们的整个构建过程,这是必须要做的。
无论如何,问题是我们的卸载EXE在卸载时不会自行删除。它位于安装我们的应用程序的 Program Files 文件夹中。卸载程序完成后,我们希望删除所有文件并删除应用文件夹。相反,卸载程序保留在应用程序文件夹中,因为它在运行时似乎无法自行删除。
这似乎是一项基本任务,因为安装在我计算机上的所有其他程序的卸载程序也位于其 Program Files 文件夹中,并且在卸载后被删除,但我似乎无法通过谷歌找到其他有同样问题的人. 对我来说,由于文件当前已加载到内存中,因此无法删除它是有道理的,但是 *呜呜声* 其他人都这样做了……为什么我不能呢?
编辑:如果有帮助,我正在运行 Wise Installation Studio 7.0 并在 WiseScript 包编辑器中修改卸载脚本。删除 Program Files 文件夹的部分看起来像Delete File(s) %MAINDIR%\*.*
%MAINDIR% 是 Program Files 中的应用程序文件夹。此命令有两个可用选项(都打开)--包括子目录和删除包含文件的目录。
windows-installer - 通过 MSI 将 cab/zip 文件提取到目标计算机
我的源文件夹层次结构很长,其路径长度超过 255 个字符。
这些是我必须部署到目标计算机的一些演示和示例文件,它们很少更改(自过去 2 年以来没有看到它们更改)。此外,我们还有用于 MSI 输出的松散未压缩媒体。
目前我们正在处理 long via filename:filename 对。我想知道我是否可以压缩示例文件夹的所有内容,这样它就只是一个文件并且易于维护。
问题是如何将此 zip/cab 文件解压缩到 INSTALLDIR 的目标计算机。
注意:我无法将 7zip 或任何开源提取器部署到目标计算机。
installation - 试图了解 Wisescript 背后的原因
我有两个关于 Wisescript 的问题,
(对于那些不熟悉 Wisescirpt 的人,它可以让您创建安装程序,就像 MSI 一样)
在 Wisescirpt 参考指南中,有一句话:
“因为 WiseScript 引擎是用 C++ 编写的,所以当您构建 WiseScript 时,您就是在构建 C++ 程序”
所以我的第一个问题是:我怎样才能看到我自己的 wisescript 的 c++?
第二个问题,我不明白 VBscript 与 Wisescript 之间的关系,我知道可以选择将 VBscript 导入 Wisescript,而且当我用记事本打开 Wisescript 时,我可以看到看起来像 VBscript 的代码,但是我不是 VBscript
我简要介绍的第二个问题是: Wisescript 和 VBscript 之间有什么关系?(我有兴趣了解解释器、编译器层..)
谢谢,
担
installation - 如何在 Wise Installer Editor 中运行回滚自定义操作?
我正在制作一个使用某些自定义操作的安装程序。我想创建一个回滚操作,以在安装取消或不成功时撤消此更改。
到目前为止,我尝试过的是文档告诉您要做的事情,即在延迟模式下调用 CA 并在 In-Script Options 中设置“仅回滚”。如果取消安装,安装程序尝试调用 CA 的那一刻,安装失败,无论 CA 的内容是什么,安装程序尝试调用它的那一刻总是失败。它说安装程序无法执行找到安装所需的程序(CA),即使 CA 是用“从安装运行 WiseScript”调用的,所以 CA 应该在那里。
windows - 如何通过 Win API 调用或(更好)读取注册表值来读取 Windows 构建版本
我们安装的偶尔会检测到错误的 Windows 版本。(它通过内置的 Wise 安装程序功能检测版本以检测系统信息,并没有说明它是如何做到的)。
所以,我正在寻找另一种方法来检测 Windows 版本。Wise 安装程序调用 Windows API 函数的能力非常有限,因此从注册表或特定文件中读取会更容易(当然,我必须将文件版本映射到 Windows 版本)。
我发现了这个讨论线程: http ://www.velocityreviews.com/forums/t513244-best-way-to-get-version-from-registry.html 但它没有引用。所以我不确定它有多可靠。
wise - 无需使用 Wise Installer 覆盖文件
我使用 Wise Installation Express 7.0 为我的应用程序创建安装程序。在我的安装中有一个包含用户名和密码的文件。安装或卸载应用程序时需要安装/卸载它。但是,当应用程序升级时,不需要覆盖该文件。我怎样才能用 Wise 做到这一点?谢谢。
windows-installer - 使用 Wise Installer Studio 7.0 时,自定义操作返回实际错误代码 1154
首先,这与通过 WiX 使用的 C# 中的自定义操作失败并出现错误 1154的问题非常相似
但是,在我的情况下,我无法辨别解决问题的具体步骤。希望有人能指出我正确的方向。
在我的情况下,我使用 Wise Installation Studio 7.0 执行我编写的 C# 自定义操作,以在 Server 2008 R2 及更高版本上启动 .Net Framework 3.5 SP1 的服务器管理器功能。
我在 Visual Studio 2010 中将自定义操作创建为标准的 .Net 2.0 类库。
我的猜测是我需要在这里做一些不同的事情 - 这需要编译为托管 DLL 之外的东西。我正在使用的代码相当直接......取自 flexera 论坛,其他人在其中发布了针对 Server 2008 R2 上的 .Net Framework 3.5 SP1 问题的解决方案。
关于我应该如何在 VS2010 中进行此操作的任何想法?或者是我的 Wise Installation Studio 包 CA 配置中的问题?据我所见,VS2010 只构建托管的 ActivateDotNetFramework.dll 文件,没有别的。我将此文件添加到我在 wise 包中的资源中,并将函数名称列为 ActivateDotNetFramework。
我已经在这个问题上转了一天多。任何帮助表示赞赏。谢谢。
丹李惊人的图表!发布工程师
installation - 从 32 位安装程序写入 64 位注册表
我有一个用 Wise Installation Studio 编写的 32 位应用程序和一个 32 位安装程序。我知道......我不应该使用 Wise,我应该改用其他东西。但现在,我坚持下去。
我们的应用程序是图形密集型的,为了提高性能,我们希望它在运行时禁用桌面合成 (Windows Aero)。我们在 32 位系统上通过在以下位置添加注册表项来完成此操作:
值为DISABLEDWM
.
这会在我们的 EXE 属性的兼容性选项卡中设置“禁用桌面合成”复选框,以便默认检查。
这在 32 位系统上完美运行,但在 64 位系统上运行安装程序时,Windows 会将注册表项的创建重定向到HKLM\SOFTWARE\Wow6432Node
,并且标志设置不正确。如果我在 64 位注册表视图中手动创建一个条目,那么它可以工作。
那么如何从我们的 32 位安装程序强制在 64 位注册表视图中创建此注册表项?或者除了创建注册表项之外,还有更好的方法来设置此属性吗?