我正在尝试制作一个iPad/iPhone应用程序(使用MonoTouch),首先检查当前版本与自定义Web服务报告的最新版本.如果应用程序已过期,则应从Web服务下载新版本的二进制文件并替换当前版本.
该应用程序将通过ad-hoc或通过企业部署进行分发,因此不受Apple的验证或AppStore的版本控制系统的限制.
我正在考虑制作两个应用程序,一个引导程序和真正的应用程序.在Windows下,引导程序将使用简单的文件操作来替换真正的应用程序,但在iOS下我不太确定这是可能的,如果可能的话,我不知道该怎么做.
所以,问题是:使用MonoTouch for iOS制作自我更新应用程序的"正确"方法是什么?
谢谢.
UPDATE
好像我有这个工作,至少在模拟器中.
基本思想是在引导程序中实现最小化,如Main()方法和AppDelegate,然后使用反射从位于应用程序包外部的二进制文件加载导航控制器和其他所有内容,这将受制于自我更新操作.
这是bootstrapper代码:
Main.cs
namespace Bootstrapper
{
public class Application
{
static void Main (string[] args)
{
UIApplication.Main (args,null,"AppDelegate");
}
}
}
Run Code Online (Sandbox Code Playgroud)
AppDelegate.cs
namespace Bootstrapper
{
[Register("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
// Connect window and navigationController stuff
// ...
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
Assembly asm = Assembly.LoadFile(@"/Users/sorincom/Projects/SelfUpdate/TheApp/bin/Debug/TheApp.dll");
navigationController = (UINavigationController)Activator.CreateInstance(asm.GetType("TheApp.NavigationController"));
window.AddSubview (navigationController.View);
window.MakeKeyAndVisible ();
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
真正的应用代码:
NavigationController.cs
namespace TheApp …Run Code Online (Sandbox Code Playgroud) 我正在构建一个小脚本来更新树莓派上的应用程序文件。
它将执行以下操作:
我遇到的问题是其中一个文件是 updatescript.sh。
我已经读到在执行时更新/更改 bash 脚本是危险的。请参阅在运行时编辑 shell 脚本
有什么好方法可以实现我想要做的事情吗?
我开发了一个基于 Cordova 的应用程序,该应用程序发布到 IOS 和 Apple Store,我希望用户在有新版本时收到通知,并允许用户从 App Store 更新应用程序,目前,我尝试了很少的插件,但大多数它们不起作用,有人可以帮助我如何通知用户更新吗?
我正在 Flutter 中使用ListView.builder。现在一切正常,我在回调方法中有以下代码行:
@override
void initState(){
items = new List();
for(int index = 0; index < dataList.length; index++){
items.add(...creating widget ..);
}
}
@override
Widget build(BuildContext context) {
return Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: dataList.length,
itemBuilder: (BuildContext context, int index) {
return Container(
width: width,
height: 160 ,
key: UniqueKey(),
padding: EdgeInsets.all(10),
child: items[index],
);
},
),
);
}
Run Code Online (Sandbox Code Playgroud)
问题是当 dataList 的数据更新时,如果数据值更新、删除或位置更改,我应该如何实现此列表以使列表更新 UI 。StreamBuilder 是解决方案吗?
在AppData文件夹中安装应用程序是否可以接受?Google Talk和Chrome都没有安装在默认的Program Files文件夹中.它们安装在用户的AppData文件夹中.微软与ClickOnce做同样的事情......
我希望我的应用程序能够自我更新,但是当它安装在Program Files文件夹中时,它会失败.在Windows Vista(2008和Seven)下,应用程序无法在Program Files文件夹中写入.我知道UAC是负责任的,但它阻止我的应用程序自我更新.
如果我想在AppData文件夹中部署以解决安全问题,如何告诉我的MSI安装项目在AppData中安装?任何的想法?
谢谢!
更新:我不能使用ClickOnce,因为它需要证书.我不想花200美元/年的证书.
假设我有一个PHP游戏,这是一个赚钱的游戏,每天市场上的物品价格变化.
我怎样才能让数据库中的价格每天自动更新?我会在服务器上安装一个程序来检测它何时运行24小时然后运行一个PHP文件进行更新?或者os有另一种方式吗?
编辑:事情是伙计们,我实际上并不拥有我从托管公司租用的服务器所以我真的没有访问命令行:s
谢谢,斯坦尼
我正在创建一个自动更新的应用程序.我想要检查文件是否存在于域中的所有拳头,我以前从未做过类似的事情所以我找到了一个代码并对其进行了调整以适应我的项目.问题是,我总是得到该文件存在.
-(BOOL) webFileExists {
int fcurVer = [[self getCurrentVersion] intValue];
fcurVer++;
NSLog(@"%i", fcurVer);
NSString *url = [NSString stringWithFormat:@"http://www.site.org/folder/version/%i.dmg", fcurVer];
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
NSHTTPURLResponse* response = nil;
NSError* error = nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"statusCode = %i", [response statusCode]);
if ([response statusCode] == 404) {
return NO;
}
else {
return YES;
}
Run Code Online (Sandbox Code Playgroud)
}
有任何想法吗?顺便说一句,如果有人也知道如何下载文件,并安装它替换旧文件,请帮助我.
我有一个java应用程序,在我的办公室网络中使用了很多计算机.这是一个java swing应用程序,当大多数时候有更新时我必须更新每台计算机.目前有一种机制可以自动更新这些应用程序,但似乎它无法正常工作,也就是说我在数据库中有一个简单的表,它保存已发布的版本号,当应用程序启动它时,它会根据数据库检查其版本.如果它不符合,则从我们在网络中安装的FTP服务器下载整个应用程序.
最近想到创建一个服务器来完成这个任务.但是,我不知道这是否是一个好习惯.
我的想法是,有一台服务器可以获取FTP服务器中每个文件的md5哈希值,并将该哈希列表和文件列表发送给其客户端.当客户端(我的swing应用程序)获得此列表时,它会将这些哈希值与其文件进行比较,如果存在不匹配,则客户端可以从FTP服务器下载该文件.
请告诉我这是更新java应用程序的好方法吗?
假设我有一个SP2010解决方案,可以做很多事情:创建内容类型,实例化列表,添加事件接收器,Web,整个群.现在让我说我开发新东西:更改一些内容类型,更改一些事件接收器等.现有列表不会受到任何影响.我想这是给定的,但我需要在各处应用这些变化.您如何很好地处理解决方案更新?
我知道SharePoint有一个升级框架(请参阅SPPersistedUpgradableObject.NeedsUpgrade),但我认为它适用于SharePoint产品本身的升级.
那么该怎么办?将当前版本号存储在某处的属性包中,连接一个功能激活的事件接收器,整个世界(webapps,网站,网站,列表......)并升级所有内容?必须有一些框架来帮助我,如果没有其他的话,那么至少应该在某处显示进度条,因为它可能需要5分钟或更长时间.欢迎所有想法.
auto-update ×10
ios ×2
java ×2
.net-3.5 ×1
android ×1
bash ×1
cocoa ×1
cordova ×1
deployment ×1
desktop ×1
flutter ×1
installer ×1
intranet ×1
listview ×1
objective-c ×1
php ×1
sharepoint ×1
shell ×1
swing ×1
uac ×1
xamarin.ios ×1