如何迁移Delphi或者克隆Delphi注册表设置?

12

我有两台计算机,都装了XE2。我以为两台电脑的安装都是一样的,但有一个电脑在安装第三方软件时出现问题,而另一个则完全没有问题。

我希望两台电脑的设置相同,最简单的方法可能就是将工作正常的电脑的设置“迁移”到我的Dropbox文件夹中。我可以这么做吗?如果可以,怎么做?

如果不行,我能(容易地)备份一台电脑的注册表设置,然后导入到另一台电脑吗?

我想我可以试着解决一台电脑的问题,但迄今为止没有什么好的方法。我宁愿花时间只使用一个Delphi设置。另外,由于我正在将许多其他内容移动到DropBox中...


5
为了达到这个目的,我使用虚拟机。一旦我的Delphi安装在虚拟机中,我就可以在不同的电脑上使用它,并且我可以通过克隆尝试许多东西而没有任何问题。 - Andreas
3
我同意,而且我也出于同样的原因使用虚拟机。第三方组件很难维护。应该有更好的方法来解决这个问题。也许可以强制所有第三方供应商将库的不同“部分”放在特定的位置,就像插件适用于许多应用程序或Linux目录(如/var/log...)一样。 - Mihaela
+1 对两者都有影响。是的,那就是我应该做的,但现在为时已晚 :-( 顺便问一下,你怎么将虚拟机从一台机器移到另一台机器上? - Mawg says reinstate Monica
3
好的,让我们采取一些行动。我在我的博客上提出了一些关于第三方库的更改(和限制):http://mihaelamj.com/delphi/delphi-vcl-components-portability-pcc/ - Mihaela
+1 哇!我以前从未被写入博客,谢谢。但我们能做些什么来传播这个消息呢?怎样鼓励开发者?我们能让 Embarcadero 显示兴趣吗?那遗留代码呢? - Mawg says reinstate Monica
4个回答

11

@Warren,这看起来是所有答案中最简单的一个。谢谢。我最初的反应是将其选为答案,并取代之前的答案。然后现实情况出现了,我意识到我和许多其他业余程序员无法再承担升级费用。我想知道Embarcadero是否可以被说服将其作为免费的独立工具发布。 - Mawg says reinstate Monica
1
下载试用版本,并尝试使用。试用版本是免费的。 - Warren P
当我使用MigratioTool,并设置导入设置迁移文件,然后点击下一步、下一步、下一步(XE5),最后点击完成时,会显示“正在从注册表备份设置...系统找不到指定的路径”。 - Mohamad
你应该在Community.embarcadero.com上发布并提到你所做的事情。也许那里的某个人已经遇到过XE5导出时出现的这个问题?也许它正在尝试查找你在HKEY_CURRENT_USER注册表部分中甚至没有设置的注册表设置。 - Warren P

10

http://www.cnpack.org安装CnPack向导

从CnPack工具栏中选择IDE Config Backup/Restore(如下图),并将此文件保存在安全的地方

IDE Config Backup/Restore

将组件复制到第二个Delphi机器上,保持完全相同的目录结构

我将组件存储如下,这可以帮助备份、移动等操作,但您也可以使用自己的结构

D:\components_bds\DCU

D:\components_bds\BPL

D:\components_bds\ComponentsThemselves

使用CnPack提供的还原配置文件,在新机器上还原您的组件

如果您正在测试计划稍后删除的组件,并在防止出现问题时保留安装备份,则这也很有用。如果硬盘损坏,您可以节省新的Delphi安装时间。将其保存到闪存驱动器或其他安全位置

您可以使用诸如Beyond Compare之类的工具来比较/diff cnPack创建的配置文件,看看差异是什么,以找出为什么第三方组件在其中一台机器上出现问题的原因。可能是Delphi注册表/安装问题,也可能是第三方组件路径中的问题。组件需要按顺序安装,也许它没有找到所依赖的DCU或DLL。


谢谢 - 这太棒了!运行得很好 - Dane Balia

2
我不知道如何使用DropBox实现此功能。这是我在CodeGear新闻组发布的一篇旧文章(与Delphi 7有关,但仍适用于注册表键的更正),希望能帮到你。
(可能不用说,但在开始之前,请使用RegEdit备份目标计算机上的现有注册表设置并导出它们,以防万一。如果发生问题,您至少可以通过删除导入的条目然后导入保存的条目来回到当前状态。)
引用: 你不能这样做,至少会有些困难。(特别是如果安装了第三方组件,因为它们可能已经将文件放置在%SYSTEM%文件夹中,而您可能不知道。) 您可以尝试(从旧计算机迁移到运行完全相同版本Windows的新计算机!)通过导出旧机器下HKCU \ Software \ Embarcadero和HKLM \ Software \ Embarcadero下的注册表键,并在新机器上安装Delphi(在完全相同的文件夹位置),然后导入该注册表文件。 许多编译器,链接器和其他设置是基于项目配置的,并且应该在将源代码移动到新机器时转移过来。 第三方组件是一个问题,如我上面所提到的。如果在导入注册表文件之前将每个第三方组件集从旧计算机复制到新计算机的完全相同位置,您可能可以使用注册表导出/导入。您可能需要跟踪一些.BPL文件,这些文件最终会在$(BDS)\Bin和$(BDS)树下的其他文件夹中结束;当您尝试启动IDE时,IDE将告诉您有关缺少内容的信息。确保在询问是否要再次尝试加载它时回答“是”。

+1 谢谢,肯恩。看起来虚拟机可能是一个好的选择,但我还得支付相当多的DropBox费用。真烦人!我一直认为注册表是微软Windows系统中最大的错误。也许对于Windows系统本身来说是这样,但对于应用程序来说不是(在我看来)。 - Mawg says reinstate Monica

1
大部分我的开发都是业余爱好或想要发布的东西。我正在认真考虑转向Lazarus,而不是试图将我的XE2 Pro从Dell Inspiron N7110 Win 7机器移动到我的新Win 10 SSD机器而死去。我已经使用过带有Indy 10、ZeosLib和Firebird的Lazarus 2.x,并成功创建了一个工作的分布式互联网系统。我还创建了XE2 Blackjack程序的Lazarus版本。与XE2相比,Lazarus(在我看来)只有两个弱点,而且对我来说都不是致命问题。顺便说一下,我已经成功地将Lazarus(带有所有安装组件)从一台机器复制并粘贴到另一台机器上,并且它可以正常运行。试试用Delphi做到这一点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接