【问题标题】:Change Program Name and Shortcut Title during installation在安装过程中更改程序名称和快捷方式标题
【发布时间】:2014-04-21 21:17:09
【问题描述】:

我有一个带有 Install Shield 2013 的基本 MSI 安装,我们有大约 20 个不同的附属版本。实际上,这些版本之间的唯一区别是程序名称和安装在桌面上的快捷方式。我们试图有一个发布版本,而不是一遍又一遍地构建相同的程序,这些细微的差异。

我一直在尝试找到一种在安装时更改这些项目的方法,但没有成功。以前有没有人这样做过,或者对我可以在哪里找到有关此类事情的一些信息有任何建议。

我在安装期间的用户体验目标如下:

  • 出现通用欢迎屏幕
  • 提示用户输入会员代码
  • MSI 将程序名称和快捷方式信息更改为分配给该代码的标题

提前感谢大家!

【问题讨论】:

    标签: windows-installer installation installshield


    【解决方案1】:

    我想我会为此使用 transform,因为更改非常小。转换用于向 MSI 添加多语言支持,因此只需对父数据库进行一些更改,这肯定会更容易。

    您可以创建自己的 setup.exe 启动器(有很多可用的模板 - 我认为即使 Installshield 也有您可以使用的模板)。 setup.exe 要求提供附属代码,然后应用适当的转换(或默认转换)并开始安装。这是推荐的方法。

    您甚至可以将转换合并为构建步骤,并根据需要输出尽可能多的“转换后的”MSI 文件。然后启动时的“笨拙”较少,但听起来您需要根据附属代码切换行为,然后您的 setup.exe 将是有效的,因为它可以包含选择要应用的转换所需的逻辑用户输入。

    如果您不熟悉转换,它本质上就像一个小“事务”或数据库片段,用于您的 MSI 添加、替换和/或使用新数据更新行。您可以通过任何 MSI 工具创建一个,包括来自 Windows SDK 的 Orca。

    转换应用于msiexec.exe的命令行。这是一个带有截断路径的示例命令行,用于说明。这是静默安装,使用详细日志和两种转换(一种是语言转换):

    msiexec.exe /I "IsWiX.msi" /QN /L*V "C:\msilog.log" TRANSFORMS="C:\IsWix.mst;C:\1031.mst"

    以下是应用于父数据库的示例转换:

    【讨论】:

    • 我对您回答的这一部分有疑问。 您甚至可以将转换合并为构建步骤,并根据需要输出尽可能多的“转换后的”MSI 文件。然后启动时的“笨拙”较少,但听起来您需要根据附属代码切换行为,然后您的 setup.exe 将是有效的,因为它可以包含选择要应用的转换所需的逻辑用户输入。 您是说我们可以进行转换,然后将转换后的 MSI 分发给我们的用户,或者让转换发生在用户端?
    • 转换只是一堆数据库值。它们可以永久合并到 MSI,或在运行时应用。后者在技术意义上是一种首选方法 - 这是转换的目的(避免直接接触原始 msi),但如果有一个好的用例,合并也可以工作。公司通常使用转换来为自己的部署应用自定义更改,同时保持原始 MSI 不变。
    • 谢谢glytzhkof!你给了我一条非常好的道路。我已经完成了 installscript 安装,但 MSI 对我来说是新的。我很高兴能弄清楚这一点。再次感谢!
    【解决方案2】:

    快捷方式表不允许格式化快捷方式名称。我知道如何通过三种方式实现变点:

    1) 构建时间 2) 安装时间 3) 运行时

    您的问题表明您想从构建时间转到安装时间。可以使用使用临时行操作快捷方式表的自定义操作来执行此操作。

    我这样做的方法是使用带有架构附属代码 [PK] 品牌的自定义表

    自定义操作将获取提示或传递的值,并在表中查找品牌数据行。然后将数据发送到快捷方式表中,让 MSI 处理其余部分。

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      相关资源
      最近更新 更多