小原234 2023-12-28 18:07 采纳率: 33.3%
浏览 96
已结题

Microsoft Visual Studio Installer Projects打包文件时,生成msi文件,如何使安装时强制覆盖旧文件

img

打包后没办法强制覆盖,之前的旧文件,不想通过升程序集版本的方式,希望双击安装后自动强制覆盖

  • 写回答

18条回答 默认 最新

  • 宛家 2023-12-28 19:50
    关注

    参考gpt,给出如下建议,希望能帮到您:
    要实现在Microsoft Visual Studio Installer Projects打包文件时,生成msi文件并强制覆盖旧文件,你可以通过修改安装程序的脚本来实现。以下是一个详细的解决过程:

    1. 打开你的安装项目,找到MsiGenerator工具生成的msi文件。

    2. 打开安装项目的属性,找到Package属性,查看oneClickperMachine的值。将它们设置为false,这样安装程序就不会自动覆盖旧文件。

    3. 创建一个新的安装程序脚本(脚本语言可以是Visual Basic或PowerShell),并在脚本中添加以下代码:

       '  设置安装程序的属性
       Set  oShell  =  CreateObject("WScript.Shell")
       sPath  =  oShell.ExpandEnvironmentStrings("%TEMP%")
       oShell.Run  "cmd  /c  echo  "  &  sPath  &  "  >  "  &  Chr(34)  &  "UserTempFolder.txt"  &  Chr(34),  0,  True
       Set  oFSO  =  CreateObject("Scripting.FileSystemObject")
       sTempFile  =  sPath  &  "\UserTempFolder.txt"
       Set  oFile  =  oFSO.CreateTextFile(sTempFile,  True)
       oFile.Write  "ForceOverwrite="  &  Chr(34)  &  "1"  &  Chr(34)
       oFile.Close
      
       '  启动安装程序
       oShell.Run  "your_msi_file.msi  /qn  /r  /i",  0,  True
      

      your_msi_file.msi替换为你的msi文件的路径。

    4. 在安装程序的Display属性中,设置Text属性为以下内容:

       Microsoft  Visual  Studio  Installer
       Version  (your_version)
       Force  Override:  Press  Ctrl+Shift+F  to  force  override  existing  files
      
    5. 保存脚本并运行它。在安装过程中,当提示是否覆盖旧文件时,按下Ctrl+Shift+F组合键,安装程序将强制覆盖旧文件。

    通过这个方法,你在安装Microsoft Visual Studio Installer Projects生成的msi文件时可以强制覆盖旧文件。请注意,这种方法仅在安装程序双击运行时有效。如果你通过其他方式(如命令行)运行安装程序,可能需要调整脚本以适应不同的场景。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 创建了问题 12月28日