在vs2010下,写了一个MFC的程序。然后将其打包了····其中,遇到了两个问题:①程序打包之后生成了2个文件,一个是  xxx.exe ,一个是   xxx.msi 。
安装 exe文件的时候,必须依赖于 msi 文件。
当然,删除 exe 之后,直接用 msi安装是可以的。但是,我们平时使用的安装程序都是  xxx.exe  的呀~~~
问,如何才能把所有东西打包到 exe 里面去哦~~~
②按照教程,最开始将程序安装在了  ../CompanyName/ProductName
这时候程序所用到的一个声音文件是放在  程序所在文件夹 里面的。
而程序中,调用此声音文件的时候 是用的当前目录:  ..//abc.wav
但是,这样安装完成之后,找不到声音文件。
于是猜想,当前目录或许是 /CompanyName 下面,于是,打包的时候删除了 ProductName 子文件夹,直接将程序放在了 /CompanyName 下,仍然找不到路径。后,又尝试 删除/CompanyName, 保留ProductName,仍然不OK。
但是,声音文件本身是没问题的,因为直接使用其绝对路径的时候,安装之后的程序是可以跑的看了下平时安装的程序,别人家的声音文件有的放在产品安装文件下,有的放在其下的子文件夹下,都是可以的。。求问,路径肿么处理??2010产品打包路径exe msi

解决方案 »

  1.   

    用7zip等,可以把一个文件夹所有文件压缩成自解压exe,这样就成了一个单独的安装包
      

  2.   

    第二问题,获取Exe所在目录+//abc.wav 使用绝对路径从开始菜单打开程序时的当前路径不是exe所在的路径
      

  3.   

    你上用INSTALLSHIELD软件做得安装包吧,如果是你可以选择不生成MSI的响导来打包工  
      

  4.   

    亲 为嘛我下了一个,用 它 打包的时候,没有 生成一个exe这个选项哩。
      

  5.   


    能不能弱弱的问一下, 如何获得当前exe所在的安装路径哦?还有哦,  开始菜单打开程序时的当前路径  ,是什么意思捏? 安装路径,不就是自己选择的那个么?
      

  6.   


    今天下了个 INSTALLSHIELD  试了下,果真好好用,专业多了哈只是,最后生成了 DSIK1 文件夹好大,比 vs 自带的 installer 大好几倍捏
    还有,弱弱的问下,我肿么米有看见 选择不生成 MSI向导
    我用的是 Basic MSI 工程类型
      

  7.   

    你用的是 Basic MSI 工程类型那肯定打包是非常大大的,这个类型自动把一些.NET库也加进去了,你不要选这个类型,你选其它类型试试,具体是哪个类型我忘了,你试试就能找到.
      

  8.   


    GetModuleFileName()在开始菜单执行程序时你用相对路径..//abc.wav,其实是类似在下面这样目录中找这个文件的,自然是找不到
    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\../abc.wav