Installation vb6 activex文档项目静默安装

Installation vb6 activex文档项目静默安装,installation,activex,project,document,Installation,Activex,Project,Document,我有一个vb6 activex文档项目,我需要创建一个msi包(这是必需的,因为它必须通过active directory部署),该包在没有任何用户界面和用户干预的情况下运行。我遵循以下步骤: 我使用VisualStudio安装程序创建了一个msi项目,并删除了所有用户界面。将所有vbd文件手动添加到项目中,并对其进行编译。当我运行msi时,它会在没有提示的情况下安装所有文件,但应用程序不会运行 我使用package and deployment向导创建了一个包,然后打开了VBPDW项目的源代码

我有一个vb6 activex文档项目,我需要创建一个msi包(这是必需的,因为它必须通过active directory部署),该包在没有任何用户界面和用户干预的情况下运行。我遵循以下步骤:

  • 我使用VisualStudio安装程序创建了一个msi项目,并删除了所有用户界面。将所有vbd文件手动添加到项目中,并对其进行编译。当我运行msi时,它会在没有提示的情况下安装所有文件,但应用程序不会运行

  • 我使用package and deployment向导创建了一个包,然后打开了VBPDW项目的源代码,注释了所有的消息框,并在需要的地方指定了默认值。然后编译setup.exe文件,并使用先前创建的安装包上的setup.exe进行复制/重写。当我在命令提示符下运行它时,比如“setup.exe-s install.log”,它在没有提示的情况下安装了应用程序,运行良好。安装后,应用程序运行良好

  • 因此,我决定使用VisualStudio2008创建一个msi包,并添加了上面创建的安装包(使用包和部署向导)。在自定义操作中,我将setup.exe设置为使用“-s install.log”参数运行。我需要一个注册表项来保存应用程序路径,所以我在注册表设置部分添加了它

  • 另一个要求是我需要在安装后运行另一个自解压exe。该自解析器将查看上述注册表项并提取(覆盖)应用程序路径上的文件

    因此,使用自定义操作,我将update.exe设置为在安装后运行

    现在,当我运行msi时,它运行良好,安装后运行update.exe,一切正常;但只是有时候。我无法预测它何时起作用,何时不起作用。当我在其他几台机器上尝试相同的msi时,它在一些机器上有效,而在其他机器上无效。 当我检查“添加或删除程序”时,这个应用程序有很多条目

    我已经为这个msi项目挣扎了一段时间,现在我感到无助。我不知道我做错了什么。如果有人能给我指出正确的方向,我将不胜感激


    有没有其他方法可以在没有提示的情况下为vb6 activex文档项目创建安装包?

    这对我使用MSI安装activex dll文档有效:

    这个回复有点晚了,但我也为此挣扎了大约一个月 在它开始工作前一年。关键似乎在于注册ActiveX exe或dll时,安装在另一台电脑上。以下作品为我工作;我只是 将dll的步骤列为尚未100%成功执行EXE:

  • 创建ActiveX dll文档(可以像exe一样使用dll创建表单)
  • 使用VB包和部署在一个地方收集必要的文件。 确保使用安全的VB系统文件(从中下载压缩文件[vb6sp6sys.zip])代替这些文件 由VB的包和部署向导生成
  • 使用VB创建小的可执行文件(确保启动对象是 代码部分如下所示。因为Internet Explorer是ActiveX文档的“容器”,所以这个小exe使用它的一个版本 (IE)加载您的UserDocument1.vbd,具体取决于您使用的操作系统。我假设Windows7和Vista在默认情况下使用不同版本的IE,而IE似乎不希望运行ActiveX文档。但是,在他们的程序文件(x86)中,有一个版本的IE将——因此测试(x86)文件夹是否存在;如果不是,则假定这是Windows的较低版本,并使用普通IE运行。将此小可执行文件称为“SilentStartUp_ByOS.exe”
  • 现在坏消息是:你需要购买高级安装程序来使用它的专业版本,这是从中提取注册信息所必需的 DLL和任何包含的OCX的本机库。有一个免费版本 高级安装程序,但它不具有此功能。 注意:可能还有其他安装包也会这样做,但是 高级安装程序是我所知道的唯一一个。我是Inno的粉丝,但不能 想办法用Inno做到这一点
  • 包括2中的所有文件。以及在3中创建的exe。在里面 您的安装包。为在3中创建的exe指定一个图标。使用高级 安装程序并使其成为启动程序的快捷方式
  • 确保在AppDataFolder\AnyFolderNameHere而不是ProgramFiles文件夹中安装所有内容(使用安装参数屏幕) 为了绕过对Win7非常严格的安全问题 和Vista,更不用说安装在公司内部网上了
  • 当一切都完成后,因为您的dll已注册,IE应该能够 启动ActiveX文档

    代码:

    Sub Main()
    
    Dim strTemp As String
    'ok, it may be Vista or Windows 7...
    strTemp = "C:\Program Files (x86)\Internet Explorer\"
    If CheckFileFolderExists(strTemp, False) = True Then
        'ok, use older version of IEXPLORE to run this on Win7 (or Vista)...
        Shell "C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE " & App.Path & "\UserDocument1.vbd", vbMaximizedFocus
    Else
        Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE " & App.Path & "\UserDocument1.vbd", vbMaximizedFocus
    End If
    
    End Sub
    
    Function CheckFileFolderExists(strName, fFile) As Boolean
    
    ' The fFile variable determines whether you're
    ' looking for a File (True) or Folder(False)
    ' The strName variable holds the fully qualified
    ' path you're looking for
    
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
      CheckFileFolderExists = False
    
      If fFile = True Then  ' It's a file
    
        If fso.FileExists(strName) = True Then
          CheckFileFolderExists = True
          Exit Function
        End If
    
      Else  ' It's a folder/directory
    
        If fso.FolderExists(strName) = True Then
          CheckFileFolderExists = True
          Exit Function
        End If
    
      End If
    
      Set fso = Nothing
    
    End Function