我一直在用我的创业公司和我,功能是一样的.到目前为止,我创建的实例仅用于计算.我想知道GCE磁盘映像和快照在技术方面是如何不同的,在哪种情况下最好使用一个而不是另一个.
我正在使用Cocoa开发一个应用程序.我需要创建一个DMG文件来安装我的应用程序,如Adium(它提供了一个很好的UI来将应用程序文件拖到Application文件夹).有这个工具吗?
当我下载Skype时,我注意到,取代普通的"磁盘映像"图标,有一个自定义图标,当我双击图标时,窗口使用彩色图像作为背景,提示我拖动skype图标进入应用程序文件夹.
我怎么能用我的应用程序做到这一点?
谢谢你,杰森
我正在寻找一种方法来获取已安装的磁盘映像的.dmg路径,只有它的挂载点.
我想写一个"简单"的Finder服务,它会弹出磁盘映像并破坏随附的.dmg.弹出是微不足道的,但是我不知道如何找出.dmg的路径,只给出了挂载点.
diskutil似乎不知道或不是说.
它适用于脚本,因此首选AppleScript或基于shell的建议.
我正在编写一个C#.Net应用程序,在需要拍摄可移动磁盘映像并将其放入Linux Live USB的Windows上运行.Live USB插入到目标机器并启动,启动时它会运行一个脚本,该脚本使用dd命令将其闪存到另一个驱动器上:
dd if =/path/to/file/from/csharp/program of =/dev/sdX
我遇到的问题是在Windows端创建图像.我已经使用dd在Linux系统上创建的文件尝试了我的Live Linux,并且工作正常,但我需要能够在Windows上的C#.Net应用程序中创建这些文件.我宁愿不必依赖cygwin或其他依赖,所以试图使用Win32 CreateFile函数打开物理设备.
调用CreateFile时,第一个arg设置为"\.\ F:"(如果F:是我要映像的驱动器),如下所示:
SafeFileHandle TheDevice = CreateFile(_DevicePath, (uint)FileAccess.Read, (uint)(FileShare.Write | FileShare.Read | FileShare.Delete), IntPtr.Zero, (uint)FileMode.Open, (uint)FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_SEQUENTIAL_SCAN, IntPtr.Zero);
if (TheDevice.IsInvalid)
{
throw new IOException("Unable to access drive. Win32 Error Code " + Marshal.GetLastWin32Error());
}
FileStream Dest = System.IO.File.Open(_SaveFile, FileMode.Create);
FileStream Src = new FileStream(TheDevice, FileAccess.Read);
Src.CopyTo(Dest);
Dest.Flush();
Src.Close();
Dest.Close();
Run Code Online (Sandbox Code Playgroud)
但是当使用Live Linux USB将输出文件重新打印到磁盘上时,结果并不像预期的那样(磁盘不可启动等,但是通过在十六进制编辑器中检查输出文件,看起来有一个MBR一开始等).
这是endianess的问题,还是我应该使用FileStream以外的东西将数据复制到文件中.
另外还有一个用于Windows源代码的dd示例(C#或C++,我已经查看了Delphi for http://www.chrysocome.net/dd并且没有完全理解它或者有一个像样的Delphi IDE来选择代码除了)所以我可以看到它是如何工作的?
UPDATE /编辑:
这是dd输出包含的前512个字节的十六进制字符串:
33 C0 FA 8E D8 8E D0 …
Run Code Online (Sandbox Code Playgroud) 我需要在我的mac上为公司源代码创建一个加密卷.要求不是非常严格:如果有人可以像我一样登录机器,他们会赢,但除此之外,他们应该失败.通过这组要求,您可以使其在登录时自动挂载磁盘.
我实际上尝试使用DiskUtils提取Fat Disk Image但我没有得到正确的文件名...
我得到"\ TURNER~3\TOPPER~1.P~1"代替"\ TURNEROVER\TOPPERSHEATH.PPTX"
FatFileSystem FatImg = new FatFileSystem(MS); //MS = Fat Image MemoryStream
foreach(DiscDirectoryInfo Di in FatImg.Root.GetDirectories())
{
foreach(DiscFileInfo Fi in Di.GetFiles())
{
Stream St = Fi.OpenRead(); // Correct Stream
string FName = Fi.Name; //Wrong Name
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为DiscUtils不支持LFN [长文件名] ...
所以我正在寻找一个完美的库来提取这些文件,我试着自己制作一个...
有没有什么方法可以解析它[可能是DiscUtils]没有FileName错误...
我想分发一个跨平台的应用程序,可执行文件略有不同,具体取决于下载它的用户.这是通过在可执行文件中的某个位置放置占位符字符串来完成的,该位置字符串在下载时被特定于用户的内容替换
必须执行这些字符串替换的Web服务器是Linux机器.对于Windows,可执行文件不会在安装程序.exe中压缩,因此更换字符串很容易.
对于未压缩的Mac OS X .dmg文件,这也很容易.但是,使用gzip或bzip2压缩的.dmg文件并不容易.例如,在后一种情况下,压缩的.dmg不是一个大的bzip2压缩磁盘映像,而是由几个不同的bzip2压缩部分(具有不同的块大小)和一个plist后缀组成.此外,使用bzip2解压缩和重新压缩不同的部分不会产生原始数据,因此我猜测Apple使用bzip2的某些参数不同于命令行工具.
有没有办法从Linux上的未压缩的一个生成压缩的.dmg(没有hdiutil)?或者可能是另一个创建自定义应用程序而不预先生成它们的建议?它应该在没有用户输入的情况下工作.
我知道以下内容可行:
hdiutil attach old.sparsebundle -mountroot .
diskutil rename old_label new_label
hdiutil detach old_label
hdiutil attach old.sparsebundle -mountroot .
Run Code Online (Sandbox Code Playgroud)
这会导致old_label被安装为new_label,但是安装它以重命名它然后卸载它并重新安装它以使标签生效是不优雅的.
还有另外一种方法吗?
diskimage ×10
macos ×5
c# ×2
cocoa ×1
dd ×1
deployment ×1
distribution ×1
dmg ×1
encryption ×1
fat ×1
filesystems ×1
icons ×1
ios ×1
ios9.3.1 ×1
linux ×1
skype ×1
snapshot ×1
timemachine ×1
winapi ×1
wmi ×1
xcode ×1