2017-02-09 208 views
1

我有一个安装程序,它包含一个32位和64位的DLL。在64位系统上,我想在32位系统上安装这两个版本,只是32位版本。Inno Setup:如何为Select Destination Location页面指定多个目录?

[Files]部分如下:

[Files] 
Source: "C:\Users\..\x64\my.dll"; DestDir: "{pf64}\{#MyPath}"; Check: IsWin64 
Source: "C:\Users\..\my.dll"; DestDir: "{pf32}\{#MyPath}" 

这一切工作正常,但如果我重写在“选择目标位置”安装目录页

  • 首先,它只是让我们我覆盖pf32路径
  • 其次,没有得到安装,如果我重写安装目录

有没有办法设置安装程序,以便“选择目标位置”获取两次,一次是32位位置,一次是64位?

回答

0

最简单的方法是为第二个目录添加一个额外的页面。

例子可见:


你当然也可以在第二个框添加到标准“选择目标位置”页面。但那是更多的工作。


更容易实现可能实际上是完全禁用“选择目标位置”页(通过设置DisableDirPageyes),并使用上述技术实现了新的类似的页面。

在这种情况下,请确保将安装目录设置为选定的自定义目录之一,以便Inno安装程序知道将卸载数据存储在哪里。否则,Inno安装程序仍然会创建DefaultDirName设置的目录(并将在那里存储卸载数据)。或者将CreateAppDir设置为no。虽然这将使Inno安装程序将卸载信息存储到{win},但不好。

有关完整的解决方案,请参阅
Use two/multiple selected directories from custom page in Files section


至于第二个问题:问题是,你实际上是将文件安装到固定位置时,“程序文件”,使用{pfXX}常数。要安装到用户在“选择目标位置”页面上选择的位置,必须使用{app} constant

+0

谢谢,我结束了'DisableDirPage = yes'并按照第二个链接中所述滚动我自己的。 –

+0

确保将安装目录设置为选定的自定义目录之一,以便Inno安装程序知道将卸载数据存储在哪里。否则,Inno Setup仍然会创建由'DefaultDirName'设置的目录(并且将在那里存储卸载数据)。 –

+0

谢谢!我实际上已禁用卸载,并使用自定义注册表键“记住”以前的安装位置。卸载对于我的用例来说是过度的 –

相关问题