none
关于VB.net制作安装包后改动 RRS feed

  • 问题

  • 用VB.net自带工具制成.exe安装包后,发现创建的项目需要改动,可是改过之后点重新生成exe文件,发现代码中提示很多错误,重新生成失败,但是代码并没有改动,请问各位这是怎么回事呢?
    2012年10月16日 15:02

全部回复

  • 你怎么改动的?具体请一页页截图,谢谢!恐怕是代码或者编译问题。

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年10月17日 2:21
    版主
  • 请告诉我们具体的错误,另外可以尝试清除(Clean)项目,重新打开项目,以及移除已经生成的安装包文件。

    Shanks Zen
    MSDN Community Support | Feedback to us


    2012年10月17日 7:01
    版主
  • 其实不用改动就直接生成之后,原本完全没有问题的代码,突然出现了很多错误提示,见截图。
    2012年10月19日 6:58
  • 其实不用改动就直接生成之后,原本完全没有问题的代码,突然出现了很多错误提示,见截图,请问这是怎么一回事呢?
    2012年10月19日 7:02
  • 图片太小了,看不清楚。如果方便的话,请上传大图。

    Best regards,


    Shanks Zen
    MSDN Community Support | Feedback to us

    2012年10月19日 7:07
    版主
  • 你好,

    正如截图中所示,第一行的引用出现了问题,建议你检查一下引用SASWorkspaceManager是否可用。

    Best regards,


    Shanks Zen
    MSDN Community Support | Feedback to us

    2012年10月19日 7:56
    版主
  • 我发现问题了,因为我有两个库引用不见了,VB和SAS连接要添加几个库引用,可是我发现其中两个突然不见了,就是项目-添加引用-COM里的SAS: Integrated Object Model (IOM) 1.0 Type Library 和SASWorkSpaceManager 1.0 Type Library,以前是有的,请问这种引用应该不会被删除吧,怎么会突然不见了呢?

    2012年10月19日 11:31
  • 用VB.net创建的项目引用了COM组件中的SAS: Integrated Object Model (IOM) 1.0 Type Library和SASWorkSpaceManager 1.0 Type Library,成功运行后,做成安装包,结果发现安装包需要重新设置后,就将生成的安装包文件删除,结果发现原来的项目运行时报错:

    警告 1 无法加载引用“SAS”的类型库。库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED)) ,

    警告 2 无法加载引用“SASIOMCommon”的类型库。库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED)),

    警告 3 无法加载引用“SASWorkspaceManager”的类型库。库没有注册。 (异常来自 HRESULT:0x8002801D (TYPE_E_LIBNOTREGISTERED)) ,

    警告 4 未能找到引用的组件“SAS”。

    警告 5 未能找到引用的组件“SASIOMCommon“。

    警告 6 未能找到引用的组件“SASWorkspaceManager”

    以及一些未定义类型未声明名称等等。

    然后发现解决方案资源管理器中几个引用出现如图情况,且几个引用的属性中路径为空,而COM组件中也已经找不到SAS: Integrated Object Model (IOM) 1.0 Type Library和SASWorkSpaceManager 1.0 Type Library,无法再次添加。请教各位有没有遇到过类似情况,到底是什么原因呢?

    2012年10月20日 8:14
  • 你好,

    我咨询了英文ClickOnce论坛版主Bob Wu,得到的回复是在部署程序的时候是不会对项目内的文件做移动的,这个过程是编译程序然后将所需的组件复制到安装包里面。我自己测试了引用一个外部组件,在部署完成之后也是正常的。如果这几个引用文件没有丢失的话,建议你重新添加引用,然后将组件的CopyLocal属性设置为True。

    希望以上信息可以帮助到你。

    Best regards,


    Shanks Zen
    MSDN Community Support | Feedback to us

    2012年10月23日 5:35
    版主
  • 太谢谢版主了,我试过重新添加引用,而且我去生成项目的文件夹里看,那几个引用对应的dll文件还是在的,但是那个COM列表里已经没有那个引用了,Copylocal的属性是False,手动改成True,但只要鼠标以离开,便会自动跳回False。我将VS卸载重新安装了一遍,还是不行,几个引用在COM列表里也没有。

    最后没办法将整个电脑的程序重装了一遍,那几个引用在COM里面里出现了,但是我现在弄不清楚是什么原因,也不敢再生成exe了。。。

    请问版主知道出现这种问题究竟是由于什么原因吗?

    2012年10月29日 7:02
  • 这个问题我无法重现,所以仅能给一些可能的方案。

    1.确认项目编译Target Framework是完整的.NET framework而不是.NET Framework Client File(右键项目-属性-编译-高级选项-Target Framework)

    2. 尝试手动将.DLL文件复制到\Bin目录下。

    3.如果你有使用插件,请先尝试禁用它们(Tools-Add-in Manager),或者以安全模式启动VS(command “devenv.exe /SafeMode”)

    以上的方案建议你在新建的项目里先测试。

    Best regards,


    Shanks Zen
    MSDN Community Support | Feedback to us

    2012年10月29日 8:10
    版主
  • 版主我又出现这个问题了。。。

    我这次也是做安装包,生成安装项目后出现错误,改动后点生成-重新生成结果提示还是不成功,所以我把生成的安装项目直接删除了,然后从解决方案资源管理器里面把安装项目移除了,就又出现上述问题,所以我又去回收站里把删除的安装项目还原,但是问题还是没有解决。

    不过这次解决方案资源管理器里几个引用旁边没有黄色的叹号提示,组件的CopyLocal属性设置为True,但是添加引用-COM列表里依然没有上述几个引用,提示的错误也和上面的截图一样。

    这是因为我把安装项目直接删除的原因吗?急啊。。。

    2012年11月7日 7:36
  • 即使通过浏览从bin目录下找到几个dll文件添加到引用中,不会提示未找到引用组件,但会提示InvalidOperationException。这是不是因为COM列表中没有这几个引用呢?这要怎样添加进去呢?

    2012年11月7日 7:49
  • 看起来像是这几个组件没有正常注册,建议你使用regsvr32 指令重新注册下这几个组件。

    Shanks Zen
    MSDN Community Support | Feedback to us

    2012年11月7日 7:59
    版主
  • 我找到了SAS文件夹中对应的SASWMan.dll复制到system32文件夹下,然后运行regsvr32 C:\windows\system32\SASWMan.dll注册成功了,但是运行会提示类型不匹配。 (异常来自 HRESULT:0x80020005 (DISP_E_TYPEMISMATCH))

    而且另外两个因为是tlb文件注册不了


    • 已编辑 ElaineZ 2012年11月7日 9:11 写错了
    2012年11月7日 9:08
  • 并且按我上面说的注册之后SASWorkspacemanager在COM列表中的路径变成C:\windows\system32\SASWMan.dll,而在正常情况下应该是在SAS文件夹路径下

    我想请问一下VS的COM是不是有一个对应的文件夹呢?里面有所有的可用的引用控件,或者有什么办法可以添加进去呢?

    2012年11月7日 9:53
  • 如果你想COM是列表中的路徑改為D:\Program Files\SAS\SharedFiles\Integration Technologies\SASWMan.dll,那你要注銷 C:\windows\system32\SASWMan.dll

    去C:\windows\system32\跑 regsvr32 SASWMan.dll /u ,

    再去D:\Program Files\SAS\SharedFiles\Integration Technologies\ 跑 regsvr32 SASWMan.dll


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog


    2012年11月12日 6:38
  • 其实我还是主要想知道为什么只要生成安装部署文件成功一次,COM列表里相关的SAS引用就不见了?
    2012年11月13日 7:02
  • 那要看安裝包,它可能把所有有關的registry清除掉,才再登記所有安裝包裡的元件。所以在安裝過程中,COM也不同了或不見了。
    所以要看負責弄這安裝包的人員或公司的決定。

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2012年11月14日 1:28
  • 那请问对于这种情况有什么办法可以恢复COM里相关的引用吗?要不然我每做一次安装包就要重新安装一次程序。。。
    2012年11月15日 10:55
  • 你好,我想弄清楚一些,你的意思是,你原本有一個COM,指著D:\Program Files\SAS\SharedFiles\Integration Technologies\SASWMan.dll,跟著在同一台電腦上,建立一個安裝包的項目,Compile或Build後,COM便改指向 C:\windows\system32\SASWMan.dll?對嗎?

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2012年11月16日 9:21
  • 不是的,是我建立一个安装包后,这个COM就不见了。

    后来我自己找到了对应文件夹中对应的SASWMan.dl文件复制到system32文件夹下,然后运行regsvr32 C:\windows\system32\SASWMan.dll注册后,COM便改指向 C:\windows\system32\SASWMan.dll。但是程序依然不能运行,提示类型不匹配。 (异常来自 HRESULT:0x80020005 (DISP_E_TYPEMISMATCH))。而且还有几个tlb文件没办法自己注册。

    最后只能只能重装一遍程序才能恢复。

    我现在就想知道为什么COM会不见?还有其他什么方法能让COM恢复到正常的状态,而不用重装程序?

    2012年11月20日 4:58
  • 它覆制 SASWMan.dll 到 System32 文件夾下,然後它自動也把 D:\Program Files\SAS\SharedFiles\Integration Technologies\SASWMan.dll 除掉了?還是它還在?

    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    2012年11月20日 5:57
  • 它还在。是我手动复制SASWMan.dll 到 System32 文件夾下

    2012年11月25日 10:58