我不是在寻找java-web-start,我正在寻找一个胖客户端应用程序安装工具包.我有一个独立的应用程序,包含几个文件(jar文件,数据文件等),需要做一些非常标准的安装任务,比如询问用户目标目录,让他们找到他们系统的某些部分 - 选择一些每台机器或每用户配置选项,并可能尝试检测它们的某些机器设置.
我正在寻找类似于MSI或其他向导驱动的安装应用程序的东西.什么是Java的好安装程序?如果它具有跨平台能力(Linux,Mac OSX和Windows),那将是理想的选择.
经过太多的实验,我得出结论,Windows Installer简直就是糟糕的技术.但客户需要MSI文件.
那么,我如何创建一个MSI文件,将EXE文件提取到临时目录并使用与传递给EXE文件相同或相似的选项运行它?
Msiexec(命令行选项)中解释了MSI的选项(MSI的低级"运行"是msiexec选项package.msi).
编辑:mjmarsh的WiX解决方案看起来很有效.我还没有机会尝试它(关键时刻).如果它有效,我会接受它.
编辑:它不起作用.遗失的部分:有人/无人看管似乎没有.
无论如何,唯一能完成这项工作的是自定义动作来杀死它的父进程!
编辑:所以有人发布了一个进一步的答案包装整个事情作为安装后的自定义操作.理论上可行,但由于可能需要重新启动(感谢MS for .NET 4有时需要重新启动),我们必须做进一步的hackery.所以从优势矩阵:
Transparency: No. One big custom action.
Customizability: No.
Standardization: No.
Management and reporting: No. Appears to work but will not.
Security: No benefit.
Validation: No. The hackery required to survive reboot makes this sure to not work.
Resiliency: Completely defeated.
Rollback: No. Rollback didn't work when we were using MSI anyway.
Patching & Updates: No. We have a local solution anyway.
Logging: No. Appears to work …Run Code Online (Sandbox Code Playgroud) 我们在Visual Studio解决方案中有一些安装项目(其他项目类型 - >安装和部署 - >安装项目).这个项目有另一个库类型项目,其安装类名为InstallationCore,类似于项目输出.在用户操作中,我调用InstallationCore安装程序的安装和卸载功能.
InstallationCore具有用于与用户交互的窗体表单.在表单中,我使用拖放功能将树视图中的拖放文本拖放到文本框.
但是符合:
txbUserName.AllowDrop = true;
Run Code Online (Sandbox Code Playgroud)
我得到JIT调试器的错误:
未处理的异常已经发生
DragDrop注册没有成功
System.InvalidOperationException:DragDrop注册没有成功
然后是长堆栈跟踪.
重要的是,当我从测试项目运行安装程序功能时,错误没有发生,一切正常.仅当我运行.msi包时才会出现错误.
有什么建议?
我知道在Windows上有一些可用于创建安装程序的安装程序工具,但在Mac OS上我看到了两种安装应用程序的方法:
您下载的DMG文件,双击,然后在里面运行应用程序 - 应用程序通常会将图标拖到另一个图标(代表Applications文件夹)以安装应用程序
另一种类型的文件启动一个明显标准的安装程序,有时会出现一个警告,如"此安装程序可能运行程序以确定您是否可以继续安装"
在Mac OS上安装应用程序的"标准"打包方式是什么?以上是苹果推荐的方式之一吗?
谢谢.
我编写了一个与Windows XP完美配合的WiX安装程序,但是当安装到Windows 7机箱时,我遇到了注册表项的困难.我需要添加一个HKLM条目以及要在开始菜单中显示的程序的注册表项.这是我用于两种类型的条目的代码:
<!-- Create the registry entries for the program -->
<DirectoryRef Id="TARGETDIR">
<Component Id="RegistryEntriesInst" Guid="...">
<RegistryKey Root="HKLM"
Key="Software\$(var.Manufacturer)\$(var.ProductName)"
Action="createAndRemoveOnUninstall">
<RegistryValue
Type="string"
Name="installed"
Value="true"
KeyPath="yes"/>
</RegistryKey>
</Component>
<Component Id="RegistryEntriesVer" Guid="...">
<RegistryKey Root="HKLM"
Key="Software\$(var.Manufacturer)\$(var.ProductName)"
Action="createAndRemoveOnUninstall">
<RegistryValue
Type="string"
Name="version"
Value="$(var.ProductVersion)"
KeyPath="yes"/>
</RegistryKey>
</Component>
</DirectoryRef>
<!-- To add shortcuts to the start menu to run and uninstall the program -->
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="ApplicationShortcut" Guid="...">
<Shortcut Id="ApplicationStartMenuShortcut"
Name="$(var.ProductName)"
Description="..."
Target="[SERVERLOCATION]$(var.Project.TargetFileName)"
WorkingDirectory="SERVERLOCATION"/>
<Shortcut Id="UninstallProduct"
Name="Uninstall $(var.ProductName)"
Description="..."
Target="[System64Folder]msiexec.exe"
Arguments="/x [ProductCode]"/>
<RemoveFolder Id="SERVERLOCATION" On="uninstall"/> …Run Code Online (Sandbox Code Playgroud) 我的要求是在programdata/test/example中创建一个目录.我怎么能在wix中这样做?
如何在WiX中创建静默安装程序,该安装程序不向用户显示任何UI对话框,并使用默认设置进行安装,升级和卸载?
如果以下URL不可用,我可以在设置创作工具中使用哪个其他时间戳URL?我得到的具体错误是:SignTool Error: The specified timestamp server either could not be reached or returned an invalid response.
我一直在尝试从Qualcomm安装这个ARToolkit:https ://ar.qualcomm.at/qdevnet/ (Windows".exe"版本)在Windows 7 64位平台上,我不断收到错误:
加载Java VM时出现Windows错误2
尝试安装此程序的程序是InstallAnywhere,但我似乎无法找到有关此错误的任何文档.发生崩溃时的对话框名称是LaunchAnywhere
我只是想知道是否有人曾经看过这种错误,如果是这样,如何解决它.我在网上找到的极少数答案与Win98/ME问题有关,因此无关紧要.
我目前正在使用JDK 1.7.0_04和jre 1.7,如果这在某种程度上相关.
我们需要将Windows服务的启动类型从"自动"修改为"自动延迟启动".我该怎么做呢?
我的代码是这样的:
<ServiceInstall
Id="WinServiceInstall"
Name="ServiceManager"
DisplayName="ServiceManager"
Type="ownProcess"
Start="auto"
ErrorControl="normal"
Vital ='yes'
Description ='Monitoring and running the jobs'
Account="[SERVICEACCOUNT]"
Password="[SERVICEPASSWORD]">
<util:ServiceConfig
FirstFailureActionType="restart"
SecondFailureActionType="restart"
ThirdFailureActionType ="restart"
cRestartServiceDelayInSeconds ="10" />
</ServiceInstall>
Run Code Online (Sandbox Code Playgroud)
如何设置重启服务时间?如果失败,我想在2分钟后设置重启服务.