转换为VS2008后,MSI的行为有所不同

时间:2009-06-30 08:53:16

标签: visual-studio-2008 windows-installer

从2005年将解决方案转换为vs2008后,我的msi开始表现不同。

并非所有的dll都被写入了,如果我从另一个进程启动msi(使用createProcess)它会失败(说smt就像'一个包返回了一个意外的值')并且安装回滚。

我知道这是一个常见的问题,解决方案是:

  1. 标记正在打包的dll 在版本上使用*(即x.x。*)
  2. 增加版本号 msi强迫ovewrite
  3. 我尝试使用解决方案2,但令我惊讶的是,当我使用devenv进行构建时,我会遇到各种构建错误(我在巡航控制中使用devenv,在visual studio中使用msbuild都很好。)

    现在我将尝试使用解决方案1 ​​ - 但我很欣赏有关替代解决方案的任何建议/想法。

1 个答案:

答案 0 :(得分:0)

一个起点是理解它为什么表现不同,也许你可以尝试详细记录(从Wikipedia's Windows Installer entry抓取):

  • 命令行:如果从命令行安装MSI软件包,可以使用/ L开关启用日志记录。例如,以下命令安装Package.msi并将详细日志记录输出到c:\ Package.log:

    msiexec /i Package.msi /l*v c:\Package.log
    
  • Windows注册表:以下注册表值可用于启用详细日志记录:

    Key: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
    Value Name: Logging
    Type: REG_SZ
    Data: voicewarmupx
    

其他值得尝试的事情:

  • 将转换前的安装程序项目文件的副本与转换后的安装程序项目文件的副本进行比较,以查看Visual Studio是否意外地“堵塞”了某些内容
  • 您是否使用不同的StartupInfo或其他参数调用CreateProcess?