如何将文件分发到Windows 7和Windows 8?

时间:2014-09-17 17:58:40

标签: vb6

昨天我遇到了一个问题,试图与一些朋友分享我的应用程序。我给了他们我的exe和运行应用程序所需的osx文件。他们试图运行它并不断收到有关未注册文件的消息。所以我告诉他们运行Regsrv32.exe路径/到/ file / filename.ocx并且他们不断出错。

快来了解一下,他们只能注册这些文件来自Administator命令提示符。所以这意味着UAC让我很难与朋友分享我的工作。

有没有办法可以创建一个自动注册这些文件的安装文件,这样我就可以分发我的应用程序而无需人们通过所有这些来打开我的东西?

2 个答案:

答案 0 :(得分:1)

正如Ken White所说,Inno Setup是一个很棒的应用程序。安装应用程序后,使用向导创建安装文件。它将在完成后在主窗口中显示配置。只需查看代码......

[Files]
Source: "C:\path to files\whatever.ocx" DestDir: "{app}"; Flags: ignoreversion

在Flags之后的行尾:只需添加regserver,看起来就像这样。

[Files]
Source: "C:\path to files\whatever.ocx" DestDir: "{app}"; Flags: ignoreversion regserver

现在,您的设置会在将ocx文件放入文件夹后自动注册该文件。 :)

确保在添加新代码后,从顶部菜单重新编译设置。

答案 1 :(得分:0)

我建议您考虑使用正确的安装程序而不是传统的脚本安装程序技术,例如InnoSetup,这比大多数情况更糟糕,因为它依赖于手工构建的脚本。

常见情景:

  • App A使用合适的安装程序,一切都很好。
  • App B使用InnoSetup和一个弱写的脚本。这将一个或多个ActiveX库复制到非标准位置,它们与A正确安装的那些重叠。可悲的是,Inno脚本重新注册了库,现在注册表指向了奇怪的位置。
  • 一切都运行好......暂时。
  • App B已卸载,并且没有使用库中指定的适当库位置而烦恼。 .DEP文件,并不打算尊重库使用计数,它删除自己的库副本。
  • 现在使用任何这些库的应用程序A,C,D,E等都已损坏。
  • 获得支持电话?不是Inno Inno!

另一种情况:

  • App Q使用InnoSetup和一个弱写的脚本。这会拉动相同的特技,但甚至可能复制它们实际所属的几个库。
  • App Q被卸载,但只是删除了库并留下了现在已经破损的注册条目。
  • App R使用一个或多个相同的库,但使用适当的安装程序会看到它们已经安装(因为它们已注册)并且不会复制它们。
  • App R永远不会运行。
  • 获得支持电话?不是Inno Inno!

是另一个:

  • App W是一个VB6程序,安装了#34;只需复制EXE和EXE(同一文件夹)旁边的所有相关ActiveX DLL和OCX。
  • 首次运行应用程序W,VB6运行时无法找到已注册的库,但通过DLL Search(LoadLibrary)跟踪它们并自行注册它们。
  • App X通过适当的安装程序安装,看到它所需的库已经注册,并且不会将它们复制到正确的位置或重新注册它们。
  • 一切都很好......暂时。
  • 用户"卸载"应用程序W删除其EXE文件夹(带有库)。
  • 现在使用任何这些库的app X,Y,Z等都被破坏了。即使重新安装也无济于事。
  • 获得支持电话?不是Perfessor XCopy!

我们所拥有的是遵循部署规则的人与忽略他们的人之间的冲突......或者只是自己动手。

诚实的人做什么?

唯一的答案是在建议的时候对此进行解密,同时使用带有SxS清单的隔离程序集进行自卫。