Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows installer Installshield Multilanguage支持的应用程序_Windows Installer_Installshield 2011 - Fatal编程技术网

Windows installer Installshield Multilanguage支持的应用程序

Windows installer Installshield Multilanguage支持的应用程序,windows-installer,installshield-2011,Windows Installer,Installshield 2011,我必须为我的客户发布的应用程序创建语言包,创建语言包设置的最佳方法是什么,因此它将安装在顶级客户发布应用程序上 我应该向用户提供安装和卸载语言包的选项。请通过installshield 2011向我推荐最好的方法。我会这样做 安装时,应用程序肯定会将安装文件夹存储在注册表中。然后,您的语言包将搜索此注册表项 如果安装位置未存储在注册表中,则您的应用程序未安装:报告错误并退出 否则,您知道将语言文件复制到何处,请继续安装语言包 您的语言包将在添加/删除程序中有自己的条目。 如果您不想要,还有两

我必须为我的客户发布的应用程序创建语言包,创建语言包设置的最佳方法是什么,因此它将安装在顶级客户发布应用程序上


我应该向用户提供安装和卸载语言包的选项。请通过installshield 2011向我推荐最好的方法。

我会这样做

安装时,应用程序肯定会将安装文件夹存储在注册表中。然后,您的语言包将搜索此注册表项

  • 如果安装位置未存储在注册表中,则您的应用程序未安装:报告错误并退出
  • 否则,您知道将语言文件复制到何处,请继续安装语言包
您的语言包将在添加/删除程序中有自己的条目。
如果您不想要,还有两种选择:

  • 将语言包注册为应用程序的更新。然后,它将仅在用户选择查看已安装的更新时显示。
    有关如何执行此操作的说明,请参见
  • 从添加/删除程序中隐藏程序包。在这种情况下,您必须提供另一种卸载软件包的方法

  • 还有一件事:主应用程序的卸载程序应该(可以)提供卸载所有已安装语言包的选项。你不想让用户手动卸载它们,对吗

    这很棘手。我想到的最简单的方法是您的主卸载程序枚举已安装的语言包并计划其删除。然而,这可能不利于UAC


    实现删除语言包的方法取决于如何创建这些包。如果您的卸载程序有一个引导程序,一个.exe而不是bare.msi,那么它可能会非常简单。引导程序启动主应用程序的卸载过程。如果成功,将继续删除语言包。这将是UAC友好的:引导程序在启动时要求提升,因此它启动的所有进程也将提升。

    我会这样做

    安装时,应用程序肯定会将安装文件夹存储在注册表中。然后,您的语言包将搜索此注册表项

    • 如果安装位置未存储在注册表中,则您的应用程序未安装:报告错误并退出
    • 否则,您知道将语言文件复制到何处,请继续安装语言包
    您的语言包将在添加/删除程序中有自己的条目。
    如果您不想要,还有两种选择:

  • 将语言包注册为应用程序的更新。然后,它将仅在用户选择查看已安装的更新时显示。
    有关如何执行此操作的说明,请参见
  • 从添加/删除程序中隐藏程序包。在这种情况下,您必须提供另一种卸载软件包的方法

  • 还有一件事:主应用程序的卸载程序应该(可以)提供卸载所有已安装语言包的选项。你不想让用户手动卸载它们,对吗

    这很棘手。我想到的最简单的方法是您的主卸载程序枚举已安装的语言包并计划其删除。然而,这可能不利于UAC


    实现删除语言包的方法取决于如何创建这些包。如果您的卸载程序有一个引导程序,一个.exe而不是bare.msi,那么它可能会非常简单。引导程序启动主应用程序的卸载过程。如果成功,将继续删除语言包。这将是UAC友好的:引导程序在启动时要求提升,因此它启动的所有进程也将提升。

    谢谢Alexey。。甚至我也有同样的想法。请详细说明如何注册语言包作为我的应用程序的更新?即使是我的主安装程序也应该卸载所有已安装的语言包。。这也是一个要求。告诉我如何做我需要更多的帮助,我创建了单独的exe,只使用语言作为组件。我从注册表中找到安装位置,并通过自定义操作进行设置。但我无法将其注册为对早期安装的更新。您能帮助我如何为我的单独安装设置父密钥名称吗exe@VinayMS您是否遵循了本节中提供的说明?您可以选择任何键,唯一要记住的是不要与其他应用程序冲突,因此请使其足够具体。使用元素添加键,应该对您有所帮助。在卸载语言包的过程中,您不应删除密钥,只应删除与此包相关的值;谢谢你,阿列克西。。甚至我也有同样的想法。请详细说明如何注册语言包作为我的应用程序的更新?即使是我的主安装程序也应该卸载所有已安装的语言包。。这也是一个要求。告诉我如何做我需要更多的帮助,我创建了单独的exe,只使用语言作为组件。我从注册表中找到安装位置,并通过自定义操作进行设置。但我无法将其注册为对早期安装的更新。您能帮助我如何为我的单独安装设置父密钥名称吗exe@VinayMS您是否遵循了本节中提供的说明?您可以选择任何键,唯一要记住的是不要与其他应用程序冲突,因此请使其足够具体。使用元素添加键,应该对您有所帮助。在卸载语言包的过程中,您不应删除密钥,只应删除与此包相关的值;使用