WIndows Installer将快捷方式放入具有属性

时间:2015-06-05 13:03:35

标签: windows-installer installshield

我正在使用InstallShield构建安装程序。这是一个基本的MSI项目(我宁愿不依赖于InstallShield,这可能会使将来更难转移到WiX)。我试图将一些快捷方式放入我想要定位的自定义文件夹中:

[INSTALLDIR]\[PROP] Environment

所有快捷方式都指向[INSTALLDIR]\My.exe [PROP],例如使用命令行参数安装的可执行文件。

在InstallShield中(并且,它显示为MSI)我不能只将目录表中的文件夹设置为[PROP] Environment(实际上我可以,但这给了我一个名为[PROP] Environment的文件夹) 。我尝试使用类型35自定义操作(设置目录),但它不执行任何操作或给我Could not access network location {expanded property} Environment,具体取决于我获得它的序列中的位置。目前它位于SetupProgress之后的UI序列中。我已经在UI和执行序列中的不同位置尝试过它,没有运气。

如果它对解决方案产生影响,最终目标是能够多次运行安装程序(作为维护或多次安装),但后续的“安装”只会在新文件夹中添加其他快捷方式,例如:

PROD Environment
TEST Environment
TRAINING Environment

随意提供WiX解决方案。我发现WiX文档和代码在解释正在发生的事情方面要比IS帮助更好。

更新:如果有帮助我已经有了.Net自定义操作(通过DTF),以防我可以这样做。我正在考虑在那里创建快捷方式。我不确定这会对广告等内容产生什么影响,我知道我需要添加一个CA来进行卸载才能将其删除。

更新更新:没有用。或者,至少,没有必要这样做,有人可能会说,不应该这样做。

1 个答案:

答案 0 :(得分:0)

解决方案非常简单,如果有点复杂的话。我最初使用InstallShield创建它,但在一点之后,您将超越InstallShield GUI的功能。我将记录MSI表(来自InstallShield DirectEditor),因此应该很容易转换为WiX。您需要在必要时添加标识符(在您需要的地方应该很明显):

  1. 在包含快捷方式的功能中创建一个空组件:
      在FeatureComponents表中
    • 添加一行:Feature_ = DefaultFeature and Component_ = MyCustomShortcuts
    • 在Component表中
    • 添加一行:Component = MyCustomShortcuts, Directory_ = MYSHORTCUTFOLDER
  2. 创建目录
      目录表中的
    • 为您的快捷方式添加一行:Directory = MYSHORTCUTFOLDER, Directory_Parent = TARGETDIR, DefaultDir = .
  3. 添加自定义操作,键入51(设置属性)以根据要控制名称的公共属性命名文件夹:
    • Action = UpdateShortcutFolder, Type = 51, Source = MYSHORTCUTFOLDER, Target = [INSTALLDIR][SHORTCUT_FOLDER_PREFIX] Shortcuts
  4. 创建快捷方式。在快捷方式表中添加一行:
    • Directory = MYSHORTCUTFOLDER, Name=MyProg~1|MyProgram, Component = MyProgramComponent, Target = [INSTALLDIR]MyProgram.exe
  5. 那就是它。快捷方式步骤是InstallShield UI无法处理的事项。幸运的是,从InstallShield Premier 2014开始,它只是忽略了它无法理解的内容,因此您无法在系统配置/快捷方式视图中查看快捷方式。然而,它们将被安装。

    在我的测试中,卸载时似乎删除了快捷方式,自定义目录也是如此。