C#项目如何制作安装程序
1.打开你的.net,用鼠标右击你的工程(解决方案),选择add new  project(添加新建项目)。2.选择 安装和部署项目web安装项目(也可以是Windows安装项目)3.vs的窗口会显示文件系统,用鼠标点击左栏下的"web application  folder"  的加号,右键选中"web application folder",选择"添加项目输出",
同时选中主输出和内容文件。4.你的工程中会新增一个yousetupname的工程,就是安装的项目。5.因为.xml, .rpt, .gif文件不能自动加到项目中,所以要手动加。在解决方案资源管理器中,右击YouSetup project(你的安装项目名),选中"添加文件",然后把你的.rpt, .xml, .gif文件加入;6.如果你用了crystal report,就要添加crystal reprot的支持文件。在解决方案资源管理器中,右击YouSetup project(你的安装项目名),选中"添加合并模块",在窗口中找到,并选中C:\Program Files\Common Files\Merge Modules\DotNETCrystalReports.msm, 打开,就加入了;
7.右击"目标计算机上的文件系统",选中属性,在属性窗口中,将productName设置为"你要打包的项目名"8.右击"web应用程序文件夹",选中属性,在属性窗口中,将DefaultDocument设置为"你的默认登录页"即"起始页",9.选中你的yousetupname工程,按右键,选中"生成";或在主菜单的"生成"中选中"生成yourSetupFileName";10 yoursetupfilename下面会有两个文件夹 DEbug 和release ,里边的.exe和.msi就是你要的安装文件,运行.exe,就可以安装了
希望有用。

解决方案 »

  1.   

    我喜欢用http://count.skycn.com/softdownload.php?id=4001&url=http://hlbr-http.skycn.net:8080/down/nsis203.exe你可以用脚本检测一下目标计算机上装。net了没~没有就装一个
    付送一下:
    Function IsDotNETInstalled
       Push $0
       Push $1
       Push $2
       Push $3
       Push $4   ReadRegStr $4 HKEY_LOCAL_MACHINE \
         "Software\Microsoft\.NETFramework" "InstallRoot"
       # remove trailing back slash
       Push $4
       Exch $EXEDIR
       Exch $EXEDIR
       Pop $4
       # if the root directory doesn't exist .NET is not installed
       IfFileExists $4 0 noDotNET   StrCpy $0 0   EnumStart:     EnumRegKey $2 HKEY_LOCAL_MACHINE \
           "Software\Microsoft\.NETFramework\Policy"  $0
         IntOp $0 $0 + 1
         StrCmp $2 "" noDotNET     StrCpy $1 0     EnumPolicy:       EnumRegValue $3 HKEY_LOCAL_MACHINE \
             "Software\Microsoft\.NETFramework\Policy\$2" $1
           IntOp $1 $1 + 1
            StrCmp $3 "" EnumStart
             IfFileExists "$4\$2.$3" foundDotNET EnumPolicy   noDotNET:
         StrCpy $0 0
         Goto done   foundDotNET:
         StrCpy $0 1   done:
         Pop $4
         Pop $3
         Pop $2
         Pop $1
         Exch $0
     FunctionEnd
      

  2.   

    还是给个完整的例子好了~:
    ; RTS_Server.nsi 
    ; 试验室管理系统服务器端 alpha版(创新试验项目) by C#

    ;宣告软件名称,后面可以利用 ${NAME} 调用这个名字
    !define NAME "试验室管理系统服务器端" 
    ;设定字型
    SetFont 宋体 9 
    ;使用 WindowsXP 视觉样式
    XPstyle on 
    ;安装窗口的标题名称
    Caption /LANG=2052 "试验室管理系统服务器端 alpha版(创新试验项目) by C#" 
    ;替换预设的按钮文字
    MiscButtonText /LANG=2052 "< 上一步" "下一步 >" "取消" "关闭" 
    ;替换预设的按钮文字
    InstallButtonText /LANG=2052 "安装" 
    ;替换预设的按钮文字
    UninstallButtonText /LANG=2052 "反安装" 
    ;替换反安装程序的文字
    DirText /LANG=2052 "欢迎您安装 试验室管理系统服务器端 这是个自由软件版权归原作者 RTS 所有。此安装程序由" "请选择欲安装 ${NAME} 的目录:" "浏览..." ;替换反安装程序的文字
    UninstallText /LANG=2052 "现在将从你的系统中反安装 ${NAME} 。如果你触发了 ${NAME} 的功能动态连结文件必须重开机之后才可以被删除。" "反安装目录:" ;替换反安装程序标题的文字
    UninstallCaption /LANG=2052 "反安装 ${NAME}" 
    ;替换反安装程序的文字
    DetailsButtonText /LANG=2052 "显示详细过程" 
    ;替换反安装按钮的文字
    UninstallButtonText /LANG=2052 "反安装" ;反安装程序显示方式预设是隐藏
    ShowUninstDetails hide 
    ;替换空间的文字
    SpaceTexts /LANG=2052 "所需的空间 " "可用的空间 " 
    ;这个安装程序的名称
    Name "服务器端α版" ;输出制作完成的安装程序档案
    OutFile "服务器端α版.exe" ;预设的安装程序目录在 Program Files 里
    InstallDir $PROGRAMFILES\${NAME} 
    ;底下开始是安装程序所要执行的Section "Install" Call IsDotNETInstalled
    Pop $0
    StrCmp $0 1 isFm inNot 
    isFm:
    Goto +3 
    inNot:
    MessageBox MB_OK "在你的系统没有发现.net框架,即将开始安装!"
    ExecWait "dotnetfx.exe"
    ;设定输出的路径在安装程序的目录
    SetOutPath $INSTDIR 
    ;贴上你所要包装在安装程序里的档案
    File "C:\Documents and Settings\apower511\桌面\RTSConsoleServer.exe"
    File "C:\Documents and Settings\apower511\桌面\send.exe"
    File "C:\Documents and Settings\apower511\桌面\RTS.mdb"
    ;在程序集里建立反安装程序的快捷方式
    CreateDirectory "$SMPROGRAMS\${NAME}" 
    ;CreateShortCut "$DESKTOP\${NAME}.lnk"  "$INSTDIR\RTSConsoleServer.exe"
    ;CreateShortCut "$DESKTOP\Send.lnk" "$INSTDIR\Send.exe"
    ;CreateShortCut "$SMPROGRAMS\${NAME}\反安装 ${NAME}.lnk"  "$INSTDIR\uninst.exe"
    ;CreateShortCut "$SMPROGRAMS\${NAME}\${NAME}.lnk"  "$INSTDIR\RTSConsoleServer.exe"
    ;CreateShortCut "$SMPROGRAMS\${NAME}\Send.lnk"  "$INSTDIR\Send.exe";写入建立反安装程序要跟上面所连结的档名一样
    WriteUninstaller "$INSTDIR\uninst.exe" 
    SectionEnd 
    ;安装程序过程到此结束;反安装程序内容
    Section "Uninstall" Delete "$INSTDIR\*.*" 
    ;Delete "$DESKTOP\${NAME}.lnk" 
    ;Delete "$DESKTOP\Send.lnk" 
    RMDir "$SMPROGRAMS\${NAME}" 
    RMDir "$INSTDIR" 
    SectionEnd 
    ;反安装程序过程到此结束
    Function IsDotNETInstalled
       Push $0
       Push $1
       Push $2
       Push $3
       Push $4   ReadRegStr $4 HKEY_LOCAL_MACHINE \
         "Software\Microsoft\.NETFramework" "InstallRoot"
       # remove trailing back slash
       Push $4
       Exch $EXEDIR
       Exch $EXEDIR
       Pop $4
       # if the root directory doesn't exist .NET is not installed
       IfFileExists $4 0 noDotNET   StrCpy $0 0   EnumStart:     EnumRegKey $2 HKEY_LOCAL_MACHINE \
           "Software\Microsoft\.NETFramework\Policy"  $0
         IntOp $0 $0 + 1
         StrCmp $2 "" noDotNET     StrCpy $1 0     EnumPolicy:       EnumRegValue $3 HKEY_LOCAL_MACHINE \
             "Software\Microsoft\.NETFramework\Policy\$2" $1
           IntOp $1 $1 + 1
            StrCmp $3 "" EnumStart
             IfFileExists "$4\$2.$3" foundDotNET EnumPolicy   noDotNET:
         StrCpy $0 0
         Goto done   foundDotNET:
         StrCpy $0 1   done:
         Pop $4
         Pop $3
         Pop $2
         Pop $1
         Exch $0
     FunctionEnd
      

  3.   

    就三个文件和你的安装一起打包就行了Framework,IE6.0(WEB用),MDAC2.7