C# 制造软件安装包问题

C# 制造软件安装包问题,c#,.net,visual-studio-2008,installation,inno-setup,C#,.net,Visual Studio 2008,Installation,Inno Setup,我正在制作软件安装包,之前我使用的是Inno安装,它工作得非常好 我在Inno安装程序中遇到的当前问题是,它不支持安装UI的所有语言,例如简体中文 VSTS 2008的安装项目几乎支持所有语言,但它不支持从当前安装程序调用另一个安装程序以让最终用户安装依赖的软件包 我要发布的程序是针对Windows平台(Vista和XP)的,是用C#+VSTS 2008+.Net 2.0编写的 对我的问题有什么建议吗 提前感谢,, George正如对您的问题的一条评论所建议的,您可能只想将所需的语言集成到您的I

我正在制作软件安装包,之前我使用的是Inno安装,它工作得非常好

我在Inno安装程序中遇到的当前问题是,它不支持安装UI的所有语言,例如简体中文

VSTS 2008的安装项目几乎支持所有语言,但它不支持从当前安装程序调用另一个安装程序以让最终用户安装依赖的软件包

我要发布的程序是针对Windows平台(Vista和XP)的,是用C#+VSTS 2008+.Net 2.0编写的

对我的问题有什么建议吗

提前感谢,,
George

正如对您的问题的一条评论所建议的,您可能只想将所需的语言集成到您的Inno设置中。您可以通过添加
语言
部分来实现这一点:

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
这允许用户界面以英语和荷兰语显示。可以相应地添加其他翻译

Windows Installer不允许“嵌套安装”(从MSI运行MSI)这一事实可能令人恼火。但是,您可能会考虑将MSI安装程序打包成一个UI少(=静默)的Ino安装程序,并让iNo安装程序逐一运行MSIS。 编辑
这将显示如何运行EXE文件来安装依赖项。请注意,它们可能安装在您的软件之后。如果需要在安装软件之前安装它们,您可能需要编写一个小的Pascal脚本-这在帮助文件中进行了解释

[Files]
DestDir: {tmp}; Source: .\Files\sample.exe; Flags: deleteafterinstall;
[Run]
Filename: {tmp}\sample.exe; StatusMsg: Installing prerequisite
这包括将文件
\Files\sample.exe
放入安装程序,在安装时将其复制到临时文件夹,并在安装完成后将其删除。然后,在复制文件后,它运行
TEMP\sample.exe
并等待完成

编辑2
关于OP对
[Run]
部分中项目顺序的评论:

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
有两种可能的情况:

  • 您正在使用Inno安装程序执行软件的实际安装(复制文件、注册表项等),另外还需要运行安装程序以满足先决条件
  • 您的软件也有一个单独的安装程序,只需要Inno安装程序就可以运行必备软件和软件的安装程序
  • 对于案例1:
    您根本不需要将您的EXE文件放入
    [Run]
    部分,除非您希望允许用户在安装后启动应用程序,就像在许多安装中使用复选框(“立即运行XYZ?”)一样。在这种情况下,请对EXE使用以下行:

    Filename: {app}\yourprogram.exe; StatusMsg: Run the application; Flags: postinstall skipifsilent unchecked; Description: Run the application now
    
    对于案例2:
    我会根据它们的依赖关系对
    [Run]
    部分中的条目进行排序。也就是说:第一个条目是其他一些条目依赖的条目,最后一个条目是您的应用程序设置。但我不确定这些条目的处理顺序


    这可能在
    [Run]
    部分的文档中得到回答。当有疑问时,试着向Jordan Russel(Inno安装程序的作者)寻求建议——他是个好人,我上次给他发邮件时,他回复得非常快。

    正如对您的问题的一条评论所建议的,您可能只想将所需的语言集成到Inno安装程序中。您可以通过添加
    语言
    部分来实现这一点:

    [Languages]
    Name: "en"; MessagesFile: "compiler:Default.isl"
    Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
    
    这允许用户界面以英语和荷兰语显示。可以相应地添加其他翻译

    Windows Installer不允许“嵌套安装”(从MSI运行MSI)这一事实可能令人恼火。但是,您可能会考虑将MSI安装程序打包成一个UI少(=静默)的Ino安装程序,并让iNo安装程序逐一运行MSIS。 编辑
    这将显示如何运行EXE文件来安装依赖项。请注意,它们可能安装在您的软件之后。如果需要在安装软件之前安装它们,您可能需要编写一个小的Pascal脚本-这在帮助文件中进行了解释

    [Files]
    DestDir: {tmp}; Source: .\Files\sample.exe; Flags: deleteafterinstall;
    [Run]
    Filename: {tmp}\sample.exe; StatusMsg: Installing prerequisite
    
    这包括将文件
    \Files\sample.exe
    放入安装程序,在安装时将其复制到临时文件夹,并在安装完成后将其删除。然后,在复制文件后,它运行
    TEMP\sample.exe
    并等待完成

    编辑2
    关于OP对
    [Run]
    部分中项目顺序的评论:

    [Languages]
    Name: "en"; MessagesFile: "compiler:Default.isl"
    Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl"
    
    有两种可能的情况:

  • 您正在使用Inno安装程序执行软件的实际安装(复制文件、注册表项等),另外还需要运行安装程序以满足先决条件
  • 您的软件也有一个单独的安装程序,只需要Inno安装程序就可以运行必备软件和软件的安装程序
  • 对于案例1:
    您根本不需要将您的EXE文件放入
    [Run]
    部分,除非您希望允许用户在安装后启动应用程序,就像在许多安装中使用复选框(“立即运行XYZ?”)一样。在这种情况下,请对EXE使用以下行:

    Filename: {app}\yourprogram.exe; StatusMsg: Run the application; Flags: postinstall skipifsilent unchecked; Description: Run the application now
    
    对于案例2:
    我会根据它们的依赖关系对
    [Run]
    部分中的条目进行排序。也就是说:第一个条目是其他一些条目依赖的条目,最后一个条目是您的应用程序设置。但我不确定这些条目的处理顺序


    这可能在
    [Run]
    部分的文档中得到回答。如果有疑问,请尝试向Jordan Russel(Inno安装程序的作者)寻求建议-他是个不错的人,我上次给他发邮件时,他回复得非常快。

    您可以使用Visual Studio中的安装项目,看看它默认情况下是否支持其他语言。您好,Chris,似乎安装项目不支持从当前安装程序调用另一个安装程序,以允许最终用户安装依赖的软件包。例如,我的软件依赖于某些特定的软件,我想将依赖的软件捆绑到我的软件安装包中,并提示用户安装依赖的软件