我正在使用ISCmdBld.exe在远程计算机上构建我的安装程序,我需要为INSTALLDIR指定不同的路径。我需要做类似的事情:-z INSTALLDIR =" [ProgramFiles64Folder] \ MyNewDir"对于32位-z INSTALLDIR =" [ProgramFilesFolder] \ MyNewDir"。目前,如果我尝试这个它不起作用,因为它将尝试只传入文字字符串,而不是解析括号中的属性。我用/不用引号试了一下但没有用。
我们可以引用内置目录中的installshield吗?
答案 0 :(得分:1)
你不能这样解决。正如您所见,将 -z INSTALLDIR =" [ParentFolder] Subdir" 传递给ISCmdBld会导致INSTALLDIR具有该字面值。为什么这不起作用?简而言之,因为它不是Windows Installer的工作方式。
要了解您需要完成的任务,首先使用您的32位父文件夹构建一个MSI,然后使用您的64位父文件夹构建一个MSI,并使用diff工具(例如InstallShield MSI Diff)来查看它们是如何实现的不同。 (或者,实际上,您可以在ISM的副本上执行此操作,因为此部分在那里进行了相同的更改。)您应该看到在Directory table中,INSTALLDIR记录的目录父结构已更改。参考例如Rob Mensching's Deciphering the Msi Directory Table系列文章,如果您不了解您所看到的差异。
不幸的是,在构建时没有简单的命令行方法来进行此更改。所以你有两个主要选择:
使用set-directory自定义操作在运行时更改INSTALLDIR
注意:两个这样的自定义操作可以在运行时通过引用您在其他地方设置的条件(例如通过ISCmdBld的属性)来选择两个备用位置。