我用vs2008做了一个程序的更新包,更改了版本号,而且还做了一个下载工具可以让客户下载服务器上的最新版本。
但是美中不足的就是vs打包的新版本是可以更改路径的,而且需要点击若干次确定。因为是更新包,所以我希望像很多cs商业软件一样可以自动更新,中途不让用户更改安装路径,也不需要点确定,直接完成后重启程序。请问有什么安装软件可以实现吗,像installAnywhere这样的软件可以吗?
期待各位的解答,谢谢。

解决方案 »

  1.   

    自己做安装包,通过注册表写软件位置,下次安装时不用提示了直接在注册表中找,安装完成后,ReSet当前应用程序
      

  2.   

    (1)MSI安装包支持缄默安装,好像是带 /s 参数。
    (2)可以在Visual Studio中把多余的UI删除掉。
      

  3.   

    用ms的clickOnce技术,web service也可以实现
      

  4.   

    你更新方式是什么,是通过ftp还是webservice还是其他协议
      

  5.   

    我现在用的模式是TCP直连下载,这个现在已经没办法更改了。
    现在的模式就是从服务器端下到一个msi文件,然后客户端直接运行。请问msi加/s参数具体是怎么操作的呢?
    如何把多余的ui去掉呢?谢谢
      

  6.   

    安装参数:msiexec /quiet 你的安装包.MSI其它安装选项:
     </package | /i> <Product.msi>
      安装或配置产品
     /a <Product.msi>
      管理安装 - 在网络上安装产品
     /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
      播发产品 - m 播发到所有用户,u 播发到当前用户
     </uninstall | /x> <Product.msi | ProductCode>
      卸载产品
    显示选项
     /quiet
      安静模式,无用户交互
     /passive
      无从参与模式 - 只显示进程栏
     /q[n|b|r|f]
      设置用户界面级别
      n - 无用户界面
      b - 基本界面
      r - 精简界面
      f - 完整界面(默认值)
     /help
      帮助信息
    重新启动选项
     /norestart
      安装完成后不重新启动
     /promptrestart
      提示用户重新启动(如果必要)
     /forcerestart
      安装后总是重新启动计算机
    日志选项
     /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
      i - 状态消息
      w - 非致命警告
      e - 全部错误消息
      a - 操作的启动
      r - 操作特定记录
      u - 用户请求
      c - 初始界面参数
      m - 内存不足或致命退出信息
      o - 磁盘空间不足消息
      p - 终端属性
      v - 详细输出
      x - 额外调试信息
      + - 扩展到现有日志文件
      ! - 每一行刷新到日志
      * - 记录所有信息,除了 v 和 x 选项
     /log <LogFile>
      与 /l* <LogFile> 相同
    更新选项
     /update <Update1.msp>[;Update2.msp]
      应用更新
     /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
      删除产品的更新
    修复选项
     /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
      修复产品
      p - 仅当文件丢失时
      o - 如果文件丢失或安装了更旧的版本(默认值)
      e - 如果文件丢失或安装了相同或更旧的版本
      d - 如果文件丢失或安装了不同版本
      c - 如果文件丢失或较验和与计算的值不匹配
      a - 强制重新安装所有文件
      u - 所有必要的用户特定注册表项(默认值)
      m - 所有必要的计算机特定注册表项(默认值)
      s - 所有现有的快键方式(默认值)
      v - 从源运行并缓存本地数据包
    设置公共属性
     [PROPERTY=PropertyValue]
      

  7.   


    更正: msiexec /i e:\abc.msi /quiet
      

  8.   

    请问下lzsh0622,您的: msiexec /i e:\abc.msi /quiet 是在哪儿设置呢,是在vs里面吗?具体哪个参数呢 
      

  9.   

    也就是说,msiexec /i e:\abc.msi /quiet 这行代码是不是可能写到exe(最好是msi)里面吗?
      

  10.   


    Process p = new Process();
    p.StartInfo.FileName = "msiexec.exe";
    p.StartInfo.Arguments = @"/i e:\abc.msi /quiet";  // 注意代码调试好之后,再加/quiet
    p.Start();
      

  11.   


    Application.Restart();  //执行完21楼代码,重启
    可以结贴了
      

  12.   

    。大侠现在还在。测试过了,works like magic。