如何从 InstallShield 中的 InstallScript 项目将 DLL 添加到 GAC?我尝试将 [GLOBALASSEMBLYCACHE] 添加为组件的目的地,但没有成功。它告诉我这不是目的地的有效数据。
5 回答
仅安装脚本的项目无法将文件放入 GAC。您需要一个安装脚本 MSI 项目。我最终创建了一个单独的 Windows 安装程序并使用安装屏蔽中的 LauchAppAndWait 来运行它。几乎是一个 hack,因为我不想切换到 MSI 项目。
您可以创建一个将所需组件安装到 GAC 的合并模块,而不是创建 InstallScript MSI 项目。然后在 InstallScript cab 安装中包含 MSM。这样你就可以避免 LaunchAppAndWait 的烦恼。
Gacutil 可以做到,但 Gacutil 不可再分发。可以编写自己的代码来调用 fusion API,然后从 installscript 调用它,但事实上 MSI 更容易。
IS 脚本可以访问 Win32 和其他 DLL 入口点,因此您不需要专用的 MSI 安装程序。
我们有一个安装程序,需要在安装过程的早期更改文件访问权限。我们在支持文件和广告牌部分添加了一个实用程序,这些实用程序最终位于 Setup 的 Temp 文件夹中。然后我们使用 LaunchAppAndWait 等。
另一种选择可能是在注册时将您的 .net 程序集修改为 auto-GAC 本身。如果使用 System.Configuration.Install 和朋友,那就更容易了。
gacutil
可以做到,只需将其放入 supportdir(临时目录)并从那里使用它。然后在之后清除临时目录。